Knockout.js 如何使敲除可观察数组中的对象属性是可观察的?
当在敲除映射中使用“create”选项时,我们将使该数组成为可观察数组。 但是我们如何使可观测数组中每个对象的属性成为可观测的呢 在这个来自敲除文档的示例中,子数组是一个可观察的数组,但我想让每个对象文本中的所有元素(如id、name)也是一个可观察的。我们如何做到这一点。在创建块中的每个新对象上放置一个Knockout.js 如何使敲除可观察数组中的对象属性是可观察的?,knockout.js,knockout-mapping-plugin,Knockout.js,Knockout Mapping Plugin,当在敲除映射中使用“create”选项时,我们将使该数组成为可观察数组。 但是我们如何使可观测数组中每个对象的属性成为可观测的呢 在这个来自敲除文档的示例中,子数组是一个可观察的数组,但我想让每个对象文本中的所有元素(如id、name)也是一个可观察的。我们如何做到这一点。在创建块中的每个新对象上放置一个ko.observable var data = { name: 'Graham', children: [ { id : 1, name : 'Lisa' }
ko.observable
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);
根据:
- 对象的所有属性都转换为可观察的属性李>
var myChildModel = function(data) {
ko.mapping.fromJS(data, {}, this);
this.nameLength = ko.computed(function() {
return this.name().length;
}, this);
}
当然,这将转换所有属性。然后,可以将更详细的配置专门应用于该映射调用,以处理自定义需求。快速答案是使对象的属性可见
var myChildModel = function (data) {
this.id = ko.observable(data.id);
this.name = ko.observable(data.name);
;
这也可能是最简单的方法,不过还有其他一些方法:
var viewModel = ko.mapping.fromJS(data);
它做任何事情,使属性和数组都可见。此方法的第二个参数仅用于自定义。如果不需要,您不必使用它