我有保持我的文件夾,一個簡單的模型:修改從它的外部knockout.js模式
var FolderModel = {
folders: ko.observableArray([
{id:'Global', uid: 'Global', name: 'Global', count:0},
{id:'New', uid: 'New', name: 'New', count:0},
{id:'Important', uid: 'Important', name: 'Important', count:0}
]);
這種模式是綁定到:
<ul class="folder-tree" data-bind="foreach: FolderModel.folders">
<li>
<span data-bind="text: $data.name"></span>
<span class="count" data-bind="text: $data.count"></span>
</li>
</ul>
因此,最初的看法將是什麼像這樣:
- 全球(0)
- 新(0)
- 重要(0)
然後我在做另一個腳本一些要求輪詢:等待數變化和更新模型。然而,我所做的一切都沒有奏效。我曾嘗試過:
var match = ko.utils.arrayFirst(FolderModel.folders(), function (item) {
return c == item.uid;
});
if (match) {
match.count = counts[c];
}
c - 這裏是文件夾的uid。所以,我使用arrayFirst,獲取可觀察數組中的項目並更新它。
接下來的事情我想:
$.each(FolderModel.folders(), function (index, folder) {
var newFolder = FolderModel.folders()[index];
newFolder.count = counts[folder.uid];
FolderModel.folders.replace(FolderModel.folders()[index], newFolder);
});
這也給我帶來了無處看起來也挺無聊的,但我發現這在另一個SO發出How to replace a given index element in knockoutjs
我在做什麼錯的,什麼沒」我得到了knockout.js?我在想,可觀察的數組元素會被修改,如果它是數據綁定的東西,那麼也會修改一些東西。