Javascript 使用JSON时敲除计算对象不起作用
我不熟悉Knockout,问题是我试图从JSON加载对象,并且使用计算值 请参阅JSFIDLE示例,并告诉我我做错了什么 它应该在第三行显示Hello World+开始日期 值得一提的是,当events对象位于ViewModel对象中时,该计算对象位于从json加载的events对象中Javascript 使用JSON时敲除计算对象不起作用,javascript,jquery,json,knockout.js,Javascript,Jquery,Json,Knockout.js,我不熟悉Knockout,问题是我试图从JSON加载对象,并且使用计算值 请参阅JSFIDLE示例,并告诉我我做错了什么 它应该在第三行显示Hello World+开始日期 值得一提的是,当events对象位于ViewModel对象中时,该计算对象位于从json加载的events对象中 感谢您的帮助,谢谢您目前的方法有很多问题: 您需要修复事件函数以获取一些参数来填充数据: function Event(data) { var self = this; self.titl
感谢您的帮助,谢谢您目前的方法有很多问题: 您需要修复事件函数以获取一些参数来填充数据:
function Event(data) {
var self = this;
self.title = ko.observable(data.title);
self.start = ko.observable(data.start);
self.starttextt = ko.computed(function () {
return " Hello world " + this.start();
}, this);
}
然后写入var数据=[Event];只需使用事件函数创建一个数组,它不会进行任何类型的映射。您需要在objs阵列上调用map:
您需要在viewModel中使用数据,而不是obj
演示
但是,您不需要编写所有这些映射代码,因为已经存在一个名为的插件,它是为处理此类情况而构建的
以下是使用映射插件重写的示例:
var mapping = {
create: function (options) {
var event = ko.mapping.fromJS(options.data);
event.starttextt = ko.computed(function () {
return " Hello world " + event.start();
}, event);
return event;
}
}
var viewModel = function () {
var self = this;
self.events = ko.mapping.fromJSON(js, mapping);
};
演示。您从未映射到事件对象。迭代JSON数据并从每个项目创建事件并将其推送到KO事件数组,或者使用映射插件。Hi MiBu您能提供示例吗?感谢详细回答,第一个解决方案对我有效,谢谢
var objs = JSON.parse(js);
var data = objs.map(function (e) {
return new Event(e)
});
var viewModel = function () {
var self = this;
self.events = ko.observableArray(data);
};
var mapping = {
create: function (options) {
var event = ko.mapping.fromJS(options.data);
event.starttextt = ko.computed(function () {
return " Hello world " + event.start();
}, event);
return event;
}
}
var viewModel = function () {
var self = this;
self.events = ko.mapping.fromJSON(js, mapping);
};