在一個需要生成器的函數中,可能是一個普通的JS Array或一個ko.observableArray
,如何以最小的開銷使用observableArray
?Knockout:鏈接可觀察數組
這就是目前的代碼看起來像:
function (itemGenerator) { // returns observableArray or JS array
var allItems = ko.observable();
// triggered after user interaction
var itemsFromGenerator = itemGenerator();
if (ko.isObservable(itemsFromGenerator)) {
allItems(itemsFromGenerator());
itemsFromGenerator.subscribe(newValue => {
allItems(newValue)
});
} else {
allItems(children);
}
}
有什麼辦法與observableArray
如果itemsFromGenerator
是observableArray
更換allItems
?這樣我就不必訂閱「手動」進一步的更改,並且必須拷貝數據。
(這是在一個TreeView的實現,在這裏我只想要生成的項目陣列當一個節點擴展使用。)
好的,我希望能夠避免嵌套(可觀察內部的observableArray),但它可能不是那麼糟糕。在observableArrays中包裝普通數組的小開銷在這裏也不是問題。這可能是最好的想法,或者更改API合約,以便itemGenerator總是返回一個observableArray。我已經用這些信息更新了這個問題,這是在TreeView實現中使用的。所以當一個新項目匹配一個搜索查詢時,我希望它自動添加到TreeNode的子項目中。 – Timm 2014-09-05 08:41:58