我有一个Knockout可观察数组,内部结构如下所示,
property: "Email"
value: "name@email.com"
我需要将它转换为像这样的淘汰模型对象,
var obj;
obj.Email ="name@email.com";
在Knockout中有没有一种简单的方法来实现这一目标?
提前致谢
答案 0 :(得分:0)
您可以创建可在视图模型中使用的可重用模型。这类似于在C#中使用类来创建具有公共属性的对象。
function objectModel(item) {
var self = this;
self.Name = ko.observable(item.name);
self.Description = ko.observable(item.description);
}
可以像 -
那样调用var object = {
name: 'John',
description: 'a person'
}
var john = new objectModel(object);
也可以通过参数而不仅仅是对象来完成 -
function objectModel(name, description) {
var self = this;
self.Name = ko.observable(name);
self.Description = ko.observable(description);
}
var john = new objectModel('John', 'a person');
答案 1 :(得分:0)
当然,将一个对象映射到另一个对象的最佳方法是通过knockout的实用函数,arrayMap ...例如,如果你有你的数组对象......
var thisArray = [
{ property: 'Email', value: 'name@email.com'},
{ property: '', value: ''}...
];
你还有一些你要映射到的其他对象类型......
var newObject = function(email) {
var self = this;
self.Email = email;
};
就像......一样简单。
ko.utils.arrayMap(thisArray, function(arrayItem) {
if(arrayItem.property === 'Email')
return new newObject(arrayItem.value);
});
返回一个新的newObject数组。