aurelia-bootstrap
Version:
Bootstrap components written in Aurelia.
65 lines (55 loc) • 2.02 kB
JavaScript
/* */
define(['exports', './binding-signaler'], function (exports, _bindingSignaler) {
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.SignalBindingBehavior = undefined;
var SignalBindingBehavior = exports.SignalBindingBehavior = function () {
SignalBindingBehavior.inject = function inject() {
return [_bindingSignaler.BindingSignaler];
};
function SignalBindingBehavior(bindingSignaler) {
this.signals = bindingSignaler.signals;
}
SignalBindingBehavior.prototype.bind = function bind(binding, source) {
if (!binding.updateTarget) {
throw new Error('Only property bindings and string interpolation bindings can be signaled. Trigger, delegate and call bindings cannot be signaled.');
}
if (arguments.length === 3) {
var name = arguments[2];
var bindings = this.signals[name] || (this.signals[name] = []);
bindings.push(binding);
binding.signalName = name;
} else if (arguments.length > 3) {
var names = Array.prototype.slice.call(arguments, 2);
var i = names.length;
while (i--) {
var _name = names[i];
var _bindings = this.signals[_name] || (this.signals[_name] = []);
_bindings.push(binding);
}
binding.signalName = names;
} else {
throw new Error('Signal name is required.');
}
};
SignalBindingBehavior.prototype.unbind = function unbind(binding, source) {
var name = binding.signalName;
binding.signalName = null;
if (Array.isArray(name)) {
var names = name;
var i = names.length;
while (i--) {
var n = names[i];
var bindings = this.signals[n];
bindings.splice(bindings.indexOf(binding), 1);
}
} else {
var _bindings2 = this.signals[name];
_bindings2.splice(_bindings2.indexOf(binding), 1);
}
};
return SignalBindingBehavior;
}();
});