我有以下内容:
this.testArray = ko.observableArray(["a", "b"]);
this.publishedSelectedSets = ko.observableArray().subscribeTo("SELECTED_SETS");
然后在我看来,我有:
<span data-bind="text: testArray "></span>
<span data-bind="text: publishedSelectedSets "></span>
我希望看到a,b
然后是publishedSelectedSets 的内容列表(只是数字),但显示的是:
选定集 ID:a,b
function observable() { if (arguments.length > 0) { // 写入 // 如果值没有改变则忽略写入 if ((!observable['equalityComparer']) || !observable['equalityComparer'](_latestValue , arguments[0])) { observable.valueWillMutate(); _latestValue = 参数[0]; if (DEBUG) observable._latestValue = _latestValue; observable.valueHasMutated(); } 返回这个;// 允许链式赋值 } else { // 读取 ko.dependencyDetection.registerDependency(observable); // 如果调用者进行了“读取”操作,则只需通知调用者更改 return _latestValue; } }
我尝试在末尾添加括号,publishedSelectedSets()
但我得到了同样的结果。我可以使用调试器查看数组的_latestValue
正确更新publishedSelectedSets
,但数据在 DOM 中显示不正确。
我究竟做错了什么?
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,简化了 ko.utils.arrayMap 的使用:http: //jsfiddle.net/PTSkR/80/
仍然无法弄清楚为什么我的代码不起作用......