-1

我有来自我的网络服务器的这个 JSON 对象。

{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和名称。

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

  • 关键4
    • 关键9
    • 关键5
      • 关键8
        • 关键14

等等......我应该如何使用一些带有淘汰赛js的递归函数来完成上述操作。
提前致谢。

4

1 回答 1

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。拿到手后还是蛮好看的。

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

于 2013-10-19T07:31:12.473 回答