bootstrap-vue
Version:
With more than 85 components, over 45 available plugins, several directives, and 1000+ icons, BootstrapVue provides one of the most comprehensive implementations of the Bootstrap v4 component and grid system available for Vue.js v2.6, complete with extens
66 lines (60 loc) • 2.21 kB
JavaScript
// @vue/component
export default {
methods: {
/**
* Safely register event listeners on the root Vue node
* While Vue automatically removes listeners for individual components,
* when a component registers a listener on root and is destroyed,
* this orphans a callback because the node is gone,
* but the root does not clear the callback
*
* When registering a `$root` listener, it also registers a listener on
* the component's `beforeDestroy()` hook to automatically remove the
* event listener from the `$root` instance
*
* @param {string} event
* @param {function} callback
*/
listenOnRoot: function listenOnRoot(event, callback) {
var _this = this;
this.$root.$on(event, callback);
this.$on('hook:beforeDestroy', function () {
_this.$root.$off(event, callback);
});
},
/**
* Safely register a `$once()` event listener on the root Vue node
* While Vue automatically removes listeners for individual components,
* when a component registers a listener on root and is destroyed,
* this orphans a callback because the node is gone,
* but the root does not clear the callback
*
* When registering a $root listener, it also registers a listener on
* the component's `beforeDestroy` hook to automatically remove the
* event listener from the $root instance.
*
* @param {string} event
* @param {function} callback
*/
listenOnRootOnce: function listenOnRootOnce(event, callback) {
var _this2 = this;
this.$root.$once(event, callback);
this.$on('hook:beforeDestroy', function () {
_this2.$root.$off(event, callback);
});
},
/**
* Convenience method for calling `vm.$emit()` on `vm.$root`
*
* @param {string} event
* @param {*} args
*/
emitOnRoot: function emitOnRoot(event) {
var _this$$root;
for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
args[_key - 1] = arguments[_key];
}
(_this$$root = this.$root).$emit.apply(_this$$root, [event].concat(args));
}
}
};