gpt4 book ai didi

knockout.js - 将属性添加到使用Knockout JS映射插件创建的 View 模型中

转载 作者:行者123 更新时间:2023-12-03 08:29:39 24 4
gpt4 key购买 nike

我正在研究Knockoutjs网站上的映射插件示例。

这是示例数据。

Knockout JS Mapping Plugin

var data = {
name: 'Scott',
children: [
{ id : 1, name : 'Alice' }
]
}

该示例说明了如何覆盖其中一个子级的映射,但是如何更改基础对象的映射。

例如,如果我想向Scott添加“FavouriteChild”属性,该如何处理?

我假设我需要在基本映射上使用create函数,但是在任何地方都找不到语法示例。
var myChildModel = function(data) {
ko.mapping.fromJS(data, {}, this);

this.nameLength = ko.computed(function() {
return this.name().length;
}, this);
}

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

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

编辑:从下面接受的答案中我发现这可行
<span data-bind='text: AdditionalProperty'>

knockout 代码
var mapping = {
create: function (options) {
//customize at the root level.
var innerModel = ko.mapping.fromJS(options.data);

innerModel.AdditionalProperty = 'Hello World';

return innerModel;
}
}

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

//use this as our model bindings
ko.applyBindings(viewModel);

最佳答案

您需要在映射对象本身上使用create方法,例如:

var mapping = {
//customize at the root level.
create: function(options) {
//first map the vm like normal
var vm = ko.mapping.fromJS(options.data);

//now manipulate the returned vm in any way that you like
vm.someProperty = "test";

vm.someComputed = ko.computed(function() {
return vm.first() + " " + vm.last();
});

//return our vm that has been mapped and tweaked
return vm;
}
};

关于knockout.js - 将属性添加到使用Knockout JS映射插件创建的 View 模型中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8673928/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com