I have the following:
this.testArray = ko.observableArray(["a", "b"]);
this.publishedSelectedSets = ko.observableArray().subscribeTo("SELECTED_SETS");
Then in my view I have:
<span data-bind="text: testArray "></span>
<span data-bind="text: publishedSelectedSets "></span>
I'd expect to see a,b
and then a list of the contents of publishedSelectedSets (just numbers), but what gets displayed is:
SELECTED SET IDS: a,b
function observable() { if (arguments.length > 0) { // Write // Ignore writes if the value hasn't changed if ((!observable['equalityComparer']) || !observable['equalityComparer'](_latestValue, arguments[0])) { observable.valueWillMutate(); _latestValue = arguments[0]; if (DEBUG) observable._latestValue = _latestValue; observable.valueHasMutated(); } return this; // Permits chained assignments } else { // Read ko.dependencyDetection.registerDependency(observable); // The caller only needs to be notified of changes if they did a "read" operation return _latestValue; } }
I tried adding parentheses at the end of publishedSelectedSets()
but I get the same thing. I can use the debugger to see _latestValue
updating correctly for the publishedSelectedSets
array, but the data isn't displaying correctly in the DOM.
What am I doing wrong?
SELECTED_SETS:
this.selectedSets = ko.computed(
function () {
return ko.utils.arrayMap(ko.utils.arrayFilter(vm.data.sets(), function (set) {
return set.isSelected();
}), function (set) { return set.setId; });
}).publishOn("SELECTED_SETS");
JSFiddle which is working, with a simplified use of ko.utils.arrayMap: http://jsfiddle.net/PTSkR/80/
Still can't figure out why my code isn't working...