基于函数的视图模型未转换为 JSON
Function based view models not converting to JSON
我有一个嵌套的视图模型设置,由于必须有实例(除非我遗漏了什么),因此需要将其表示为函数。在 UI 中一切正常,我可以嵌套具有嵌套视图模型的视图模型等等。
但是在目前的形式下我得到一个错误
JavaScript runtime error: Pass a function that returns the value of the ko.computed
尝试调用 ko.toJSON(x);
.
时
当我在不需要实例的情况下定义了 vms 但我的嵌套并没有因此发生变化时,这就起作用了。
这是当前情况的示例。
var CityViewModel = function() {
var self = this;
self.Name = ko.observable("");
self.ATMs = ko.observableArray();
self.AddATM = function () {
self.ATMs.push(new ATMViewModel);
}
self.GetJson = function() {
alert(ko.toJSON(self)); //Area of interest
}
}
var ATMViewModel = function() {
var self = this;
self.PostCode = ko.observable("");
self.Features = ko.observableArray();
self.AddFeature = function () {
self.Features.push(new FeaturesViewModel());
}
}
var FeaturesViewModel = function () {
var self = this;
self.Name = ko.observable("");
self.Reference = ko.observable("");
}
ko.applyBindings(CityViewModel);
我也花了一段时间才发现它.. 缺少 new
关键字
ko.applyBindings(new CityViewModel());
// ====
作为 Fiddle:http://jsfiddle.net/Quango/zf0dLLyr/
我推荐 Ryan 的调试建议:
<pre data-bind="text: ko.toJSON($data, null, 2)"></pre>
正是没有返回任何东西给了我提示。看
http://www.knockmeout.net/2013/06/knockout-debugging-strategies-plugin.html
我有一个嵌套的视图模型设置,由于必须有实例(除非我遗漏了什么),因此需要将其表示为函数。在 UI 中一切正常,我可以嵌套具有嵌套视图模型的视图模型等等。
但是在目前的形式下我得到一个错误
JavaScript runtime error: Pass a function that returns the value of the ko.computed
尝试调用 ko.toJSON(x);
.
当我在不需要实例的情况下定义了 vms 但我的嵌套并没有因此发生变化时,这就起作用了。
这是当前情况的示例。
var CityViewModel = function() {
var self = this;
self.Name = ko.observable("");
self.ATMs = ko.observableArray();
self.AddATM = function () {
self.ATMs.push(new ATMViewModel);
}
self.GetJson = function() {
alert(ko.toJSON(self)); //Area of interest
}
}
var ATMViewModel = function() {
var self = this;
self.PostCode = ko.observable("");
self.Features = ko.observableArray();
self.AddFeature = function () {
self.Features.push(new FeaturesViewModel());
}
}
var FeaturesViewModel = function () {
var self = this;
self.Name = ko.observable("");
self.Reference = ko.observable("");
}
ko.applyBindings(CityViewModel);
我也花了一段时间才发现它.. 缺少 new
关键字
ko.applyBindings(new CityViewModel());
// ====
作为 Fiddle:http://jsfiddle.net/Quango/zf0dLLyr/
我推荐 Ryan 的调试建议:
<pre data-bind="text: ko.toJSON($data, null, 2)"></pre>
正是没有返回任何东西给了我提示。看 http://www.knockmeout.net/2013/06/knockout-debugging-strategies-plugin.html