执行过npm install命令的vue-element-admin源码
康凯
2022-05-20 aa4c235a8ca67ea8b731f90c951a465e92c0a865
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
/**
 * @fileoverview Bind DOM event. this event will unbind after invokes.
 * @author NHN FE Development Lab <dl_javascript@nhn.com>
 */
 
'use strict';
 
var forEachOwnProperties = require('../collection/forEachOwnProperties');
var isObject = require('../type/isObject');
var on = require('./on');
var off = require('./off');
 
/**
 * Bind DOM event. this event will unbind after invokes.
 * @param {HTMLElement} element - HTMLElement to bind events.
 * @param {(string|object)} types - Space splitted events names or
 *  eventName:handler object.
 * @param {(function|object)} handler - handler function or context for handler method.
 * @param {object} [context] - context object for handler method.
 * @memberof module:domEvent
 */
function once(element, types, handler, context) {
  /**
     * Event handler for one time.
     */
  function onceHandler() {
    handler.apply(context || element, arguments);
    off(element, types, onceHandler, context);
  }
 
  if (isObject(types)) {
    forEachOwnProperties(types, function(fn, type) {
      once(element, type, fn, handler);
    });
 
    return;
  }
 
  on(element, types, onceHandler, context);
}
 
module.exports = once;