Javascript 使用JSON时敲除计算对象不起作用

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

我不熟悉Knockout,问题是我试图从JSON加载对象,并且使用计算值 请参阅JSFIDLE示例,并告诉我我做错了什么 它应该在第三行显示Hello World+开始日期

值得一提的是,当events对象位于ViewModel对象中时,该计算对象位于从json加载的events对象中


感谢您的帮助,谢谢

您目前的方法有很多问题:

您需要修复事件函数以获取一些参数来填充数据:

 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);
 };