Knockout.js 在使用ko.mapping插件生成的ObservalArray中插入敲除计算的observable
是否可以手动将计算出的可观测值插入到使用mapping插件生成的数组中?下面是一个不使用映射插件的示例,但我想知道它是否可以使用它 假设我有来自服务器的JSON数据:Knockout.js 在使用ko.mapping插件生成的ObservalArray中插入敲除计算的observable,knockout.js,knockout-mapping-plugin,Knockout.js,Knockout Mapping Plugin,是否可以手动将计算出的可观测值插入到使用mapping插件生成的数组中?下面是一个不使用映射插件的示例,但我想知道它是否可以使用它 假设我有来自服务器的JSON数据: [{ "OrderID":1, "FirstName":"Bill", "LastName":"Smith", },{ "OrderID":2, "FirstName":"Jeff", "LastName":"Evans", } { "OrderID":3, "Fir
[{
"OrderID":1,
"FirstName":"Bill",
"LastName":"Smith",
},{
"OrderID":2,
"FirstName":"Jeff",
"LastName":"Evans",
}
{
"OrderID":3,
"FirstName":"Dan",
"LastName":"Johnson",
}]
在我看来,我有一个订单类和一个视图模型:
function Order(order) {
var self = this;
self.OrderID = ko.observable(order.OrderID);
self.FirstName = ko.observable(order.FirstName);
self.LastName = ko.observable(order.LastName);
/*This is what I want to insert after the mapping plugin
generates "orders on the ViewModel*/
self.FullName = ko.computed(function () {
return self.FirstName() + ' ' + self.LastName();
});
}
function ViewModel() {
var self = this;
self.orders = ko.observableArray([])
//Get orders
$.ajax({
url: '@Url.Action("orders")',
type: "post",
success: function (data) {
var mappedOrders = $.map(data, function (item) { return new Order(item) });
self.orders(mappedOrders);
}
})
}
是否可以使用映射插件在视图模型上生成orders数组,也可以在orders数组中插入计算出的可观察“FullName”?您可以,根据:
在考虑了文档之后,我成功地将其应用到我的示例中,如下所示:
var data = [{
OrderID: '1',
FirstName: 'Bob',
LastName: 'Stevens'
}, {
OrderID: '2',
FirstName: 'Jim',
LastName: 'Johnson'
}];
function order(data) {
var self = this;
var model = ko.mapping.fromJS(data, {}, self);
model.FullName = ko.computed(function () {
return self.FirstName() + ' ' + self.LastName();
});
return model;
}
var mapping = {
create: function (options) {
return new order(options.data);
}
};
function viewModel() {
var self = this;
self.orders = ko.mapping.fromJS(data, mapping);
}
var vm = new viewModel();
ko.applyBindings(vm);
谢谢,这很有帮助。但我从中只看到了如何从数据的一个属性(即children->nameLength)使计算出的可观测值可见。怎样才能从两个或多个属性中计算出一个可观测值?对不起,我昨晚出去了,所以直到现在才看到你的后续问题。很高兴你最后把它整理好了。不过,从技术上讲,我会说我完全回答了你提出的问题,所以我会认为投票是最不值得的!
var data = [{
OrderID: '1',
FirstName: 'Bob',
LastName: 'Stevens'
}, {
OrderID: '2',
FirstName: 'Jim',
LastName: 'Johnson'
}];
function order(data) {
var self = this;
var model = ko.mapping.fromJS(data, {}, self);
model.FullName = ko.computed(function () {
return self.FirstName() + ' ' + self.LastName();
});
return model;
}
var mapping = {
create: function (options) {
return new order(options.data);
}
};
function viewModel() {
var self = this;
self.orders = ko.mapping.fromJS(data, mapping);
}
var vm = new viewModel();
ko.applyBindings(vm);