0
創建淘汰賽視圖模型TagsViewModel
可觀察是我<code>Tags</code>(陣列某些字符串)</p> <p>對於每個<code>Tags</code>的集合只改變了一個視圖模型
var TagsViewModel = function() {
var vm = this;
vm.showTags = ko.observable(false);
window.shouter.subscribe(function(newValue) {
vm.showTags(newValue);
}, vm, 'toggleReviewTags');
}
而且我還有一個「toggler」,以示/在另一個局部視圖中隱藏標籤。對於它,我已經創建了獨立的視圖模型TagFiltersViewModel
和使用PubSub的淘汰賽與TagsViewModel
var TagFiltersViewModel = function() {
var vm = this;
vm.isTagsVisible = ko.observable(false);
vm.isTagsVisible.subscribe(function(newValue) {
window.shouter.notifySubscribers(newValue, 'toggleReviewTags');
});
vm.toggleTags = function() {
vm.isTagsVisible(!vm.isTagsVisible());
}
}
每個TagsViewModel
我綁定到容器計算ID溝通"tag-container-"+ {tagId}
併爲每個做下一件事
var element = document.getElementById(tagModel.tagsContainer);
ko.cleanNode(element);
ko.applyBindings(new TagsViewModel(tagModel), element);
問題 - 點擊切換按鈕後,只顯示集合中的一個標籤。我創建了jsFiddle,但在那裏我無法重現我的問題。
有什麼想法在我的情況是什麼問題?
這是一種很難幫你,如果你的提琴只是按預期工作......(你忘了,包括淘汰賽,雖然)。唯一容易出錯的代碼是重複調用'cleanNode'和'applyBindings'。雖然它不是錯誤的*,但通常最好創建一個包裝視圖模型和一些'with'或'foreach'綁定來訪問您的單獨組件。 – user3297291
@ user3297291,淘汰賽我已經添加爲資源,而不是從jsfiddle下拉列表。關於包裝 - 我想,但在我的情況下,它是棘手的,並造成一些錯誤... – demo