Knockout.js 2.1.0 observableArray Subscription Test
Trying to see if you can subscribe to an observableArray with beforeChange and have it fire. It was now working for me with observableArray and changing to subscribe to a computed property worked. That was weird.
by joshjs
HTML
<h2>All Ids:</h2>
<ul data-bind="foreach: ids">
<li data-bind="text: $data"></li>
</ul>
<br>
<h2>Single Id:</h2>
<p data-bind="text: singleId"></p>
JavaScript
function ViewModel() {
var self = this;
self.ids = ko.observableArray([]);
self.hasSingleId = ko.computed(function () {
return self.ids().length === 1;
});
self.singleId = ko.computed(function () {
if (self.hasSingleId()) {
return self.ids()[0]
}
return null;
});
}
var myVM = new ViewModel();
ko.applyBindings(myVM);
myVM.ids.subscribe(function(value) {
console.log("changing ids");
}, null, "beforeChange");
myVM.singleId.subscribe(function(value) {
console.log("changing singleId");
}, null, "beforeChange");
myVM.ids.push(1);
myVM.ids.push(2);
myVM.ids.push(3);