2

使用 ko.mapping.fromJS() 创建的可观察数组具有可观察元素。我怎样才能让它表现得更像 ko.observableArray() ,其中数组是可观察的,但数组的元素不是?谢谢你。

4

2 回答 2

2

您可以使用映射插件创建选项。从 ko 文档(http://knockoutjs.com/documentation/plugins-mapping.html):

// The data to be mapped
var data = {
    name: 'Graham',
    children: [
        { id : 1, name : 'Lisa' }
    ]
};

// Your custom data model
var myChildModel = function (data) {
    this.id = data.id;
    this.name = data.name;
};

var mapping = {
    'children': {
        create: function(options) {
            return new myChildModel(options.data);
        }
    }
};

var viewModel = ko.mapping.fromJS(data, mapping);

在这个例子中,'children' 数组将被映射为一个可观察的数组,其中的属性不是可观察的。

于 2013-08-09T12:33:32.477 回答
0

你可以使用

var model = ko.observableArray(ko.toJS(data));

这将使顶级元素成为 observableArrays,但子数组将保持普通数组而不是可观察的。我不确定这是否适合您。

于 2013-08-09T12:43:45.967 回答