ko.mapping create function仅在分层视图模型中的'Children'顶级数组上工作

时间:2013-04-24 14:05:24

标签: knockout.js mapping

我正在尝试使用ko.mapping插件创建函数将计算的observable添加到分层视图模型中。但该功能仅适用于顶级'儿童'阵列! 代码如下:

Children:[{
    Name: "Page 1",
    Children: [ {
        Name: "Page 1 > 1",
        Children: [{
        Name: "Page 1 > 1 > 1",
        Children: []
    }
,{
        Name: "Page 1 > 1 > 2",
        Children: []
    }
]
    }
    ]
},
{
    Name: "Page 2",
    Children: [
    {
        Name: "Page 16",
        Children: []
    }
    ]
},
{
    Name: "Page 3",
    Children: [
    {
        Name: "aaaaa",
        Children: []
    }
]

我的功能如下

     var computed = function (data) {
                                var self = this;
                                ko.mapping.fromJS(data, {}, self);
                                self.Uri = ko.computed(function () {
                                    console.log(self.Name());
                                    return self.Name() + " Something";
                                });
                            };

     var mapping = {
                    'Children': {
                        create: function (o) {
                            return new computed(o.data);

                        }
                    }
                };

ko.mapping.fromJS(data, mapping, vm);

有没有办法让'computed'函数在所有'children'数组上运行? 感谢。

1 个答案:

答案 0 :(得分:0)

您也应该为儿童提供映射选项。尝试更新computed功能,如下所示:

 var computed = function (data) {
                            var self = this;
                            ko.mapping.fromJS(data, mapping, self);
                            self.Uri = ko.computed(function () {
                                console.log(self.Name());
                                return self.Name() + " Something";
                            });
                        };