我有一個包含數組數組的JSON結構。我有一個View Model,它定義了包含Observable數據的Observable Arrays的對象,然後將這些對象嵌套在其他Arrays和Observables中。數據綁定與Knockoutjs嵌套的JSON
加載包含可觀察數據的嵌套Observable Arrays的View模型的最簡單方法是什麼?
例子: http://jsfiddle.net/uyQb6/1/
我有一個包含數組數組的JSON結構。我有一個View Model,它定義了包含Observable數據的Observable Arrays的對象,然後將這些對象嵌套在其他Arrays和Observables中。數據綁定與Knockoutjs嵌套的JSON
加載包含可觀察數據的嵌套Observable Arrays的View模型的最簡單方法是什麼?
例子: http://jsfiddle.net/uyQb6/1/
你可以探索使用映射插件,但該選項對象將變得複雜,因爲每個創建回調將不得不再次調用映射插件,然後添加任何dependentObservables,它會更容易使所有的屬性可觀察。
雖然你可以堅持使用你的構造函數,並使用類似於ko.utils.arrayMap
的東西,它只是一個簡單的函數,它循環訪問一個數組,並將每個項目重新映射到從您提供的函數返回的任何項目。
下面是添加了ko.utils.arrayMap
呼叫您的樣品: http://jsfiddle.net/rniemeyer/VUfSS/
更新:如果你的嵌套列表是依靠主列表上,這是你的解決方案,否則,@ RP-尼邁耶的解決方案是最好的。
如果我得到了它的權利,可以說你有JSON數據是這樣的:
{
appId: 1,
appName: 'my app 1',
modules:[
{module1:1, moduleName: 'module 1'}, {module1:2, moduleName: 'module 2'}]
},
{
appId: 2,
appName: 'my app2',
modules:[
{module1:3, moduleName: 'module 3'}, {module1:4, moduleName: 'module 4'}]
}
這將是您的視圖模型:
function myViewModel(){
var self = this;
self.appList = ko.observableArray(data);
self.moduleList = ko.observableArray([]);
// Set selectedApp in order to fill modulesList
self.selectedApp = ko.observable();
self.selectedApp.subscribe(function(v){
// updates module list whenever selected app gets value.
moduleList(v.modules);
});
}
我沒有測試它,但我確定你有這個想法。
是的,我在http:// www的博客上找到[這篇文章](http://www.knockmeout.net/2011/04/utility-functions-in-knockoutjs.html)後開始走這條路。 .knockmeout.net,但我不知道是否有更好的方法。謝謝! – Homer 2012-02-01 14:00:02