2013-10-19 36 views
-1

我从我的Web服务器中获得这个JSON对象。如何在挖空中填充嵌套的字典类型对象JS

{4: {9: {'id': 9, 'name': 'key9'}, 5: {8: {'id': 8, 14: {'id': 14, 'name': 'key14'}, 
'name': 'key8'}, 7: {11: {'id': 11, 'name': 'key11'},13: {'id': 13, 'name': 'key13'}, 
'id': 7, 'name': 'key7'}, 'id': 5, 'name': 'key5'},'id': 4, 6: {'id': 6, 'name': 'key6'},  
'name': 'key4'}} 

我希望它根据使用敲除js的层次结构填充id和名称。

这看起来应该是这样......

  • KEY4
    • key9
    • KEY5
      • key8
        • key14

等等... 我应该如何使用带有淘汰赛JS一些递归函数,以做到以上。
在此先感谢。

回答

0

ko.mapping实用程序将为您处理此问题。

var rawData = <<your above data>> 

var ViewModelMapping = { 
    include: ['id', 'name'], 
    create: function (options) { return new ViewModel(options.data); } 
}; 

var ViewModel = function(data) { 
    var self = this; 
    ko.mapping.fromJS(data, ViewModelMapping, self); 
} 

$(document).ready(function() { 
    var viewModel = new ViewModel(rawData); 
    ko.applyBindings(viewModel, document.getElementById('myElement')); 
}); 

通过映射,所有的数据将被映射到一堆嵌套的observables中。一旦你得到它是相当不错的。

如果您对数据源有任何控制权,我强烈建议删除每个条目的初始整数,并使对象成为一组嵌套数组。

+0

谢谢!我如何在嵌套格式中将这些绑定应用到ul中? – kb4shubham