私は次のものを持っています:
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) { // Write // 値が変更されていない場合は書き込みを無視する if ((!observable['equalityComparer']) || !observable['equalityComparer'](_latestValue 、引数[0])) { observable.valueWillMutate(); _latestValue = 引数[0]; (DEBUG) observable._latestValue = _latestValue の場合。observable.valueHasMutated(); これを返します。// 連鎖代入を許可します } else { // 読み取ります ko.dependencyDetection.registerDependency(observable); // 呼び出し元は、「読み取り」操作を行った場合にのみ変更を通知する必要があります return _latestValue; } }
の最後に括弧を追加しようとしましたpublishedSelectedSets()
が、同じことが得られます。デバッガーを使用して配列が_latestValue
正しく更新されていることを確認できますが、DOM でデータが正しく表示されません。publishedSelectedSets
私は何を間違っていますか?
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");
ko.utils.arrayMap の単純化された使用で動作している JSFiddle: http://jsfiddle.net/PTSkR/80/
私のコードが機能しない理由をまだ理解できません...