使用获取的 json 对象淘汰 observablearray - 不填充我的视图模型
knockout observablearray with fetched json object - not populating my viewmodel
我第一次使用 Knockout(使用 v2.1.0)构建的外包应用程序。
虽然正在检索数据,但我似乎无法将获取的 json 对象放入我的视图模型中。我正在使用的代码非常大(我正在使用的这个特定的视图模型文件将近 1,700 行)。这是代码的精简版本:
var ViewModel = function(){
var self = this;
//a ton of other self.observables...
//this is the part I'm trying to update with a new enhancedTiers (array of objects)
self.medical = {
//a bunch of other self.observables...
enhancedTiers: ko.observableArray([])
},
//more self.observables...
//down to the ajax success callback I'm working within
success: function(data, textStatus, jqXHR) {
...
switch (self.currentService()) {
case "medical" :
with (self.medical) {
//we set the existing observable data here...
//trying to set the NEW data
enhancedTiers(data.enhancedTiers);
console.log('***************************');
console.log(data.enhancedTiers);
console.log(data.enhancedTiers[0].name);
console.log(data.enhancedTiers[0].summaryBean.familyDedMet);
console.log('***************************');
//all these log out the correct data
}
}
...
}
在我的 html 中,我正在执行以下操作以查看是否可以获得一些要输出的数据:
<span data-bind="text: medical.enhancedTiers()[0].name"></span>
我收到以下错误:
Uncaught Error: Unable to parse bindings.
Message: TypeError: Cannot read property 'name' of undefined;
Bindings value: text: medical.enhancedTiers()[0].name
如果我将 html 更改为:
<span data-bind="text: medical.enhancedTiers()[0]"></span>
UI 呈现 [object 对象]。
我也试过使用映射插件,但也无法正常工作。
我显然有来自 json 响应的数据,但是我似乎无法在视图模型中获取它。有人对如何将我返回的 json 数组对象放入我的视图模型有任何建议吗?
如果我将 enhancedTiers json 硬编码到我的视图模型中,我可以毫无问题地将 UI 绑定到该数据,只是我似乎无法将我的数据放入视图模型中。
这是因为视图是在您填充 observableArray 之前呈现的,所以当时这些字段不存在。您必须检查您的绑定,例如:
<span data-bind="text: medical.enhancedTiers().length > 0 ? medical.enhancedTiers()[0].name : ''"></span>
我第一次使用 Knockout(使用 v2.1.0)构建的外包应用程序。
虽然正在检索数据,但我似乎无法将获取的 json 对象放入我的视图模型中。我正在使用的代码非常大(我正在使用的这个特定的视图模型文件将近 1,700 行)。这是代码的精简版本:
var ViewModel = function(){
var self = this;
//a ton of other self.observables...
//this is the part I'm trying to update with a new enhancedTiers (array of objects)
self.medical = {
//a bunch of other self.observables...
enhancedTiers: ko.observableArray([])
},
//more self.observables...
//down to the ajax success callback I'm working within
success: function(data, textStatus, jqXHR) {
...
switch (self.currentService()) {
case "medical" :
with (self.medical) {
//we set the existing observable data here...
//trying to set the NEW data
enhancedTiers(data.enhancedTiers);
console.log('***************************');
console.log(data.enhancedTiers);
console.log(data.enhancedTiers[0].name);
console.log(data.enhancedTiers[0].summaryBean.familyDedMet);
console.log('***************************');
//all these log out the correct data
}
}
...
}
在我的 html 中,我正在执行以下操作以查看是否可以获得一些要输出的数据:
<span data-bind="text: medical.enhancedTiers()[0].name"></span>
我收到以下错误:
Uncaught Error: Unable to parse bindings.
Message: TypeError: Cannot read property 'name' of undefined;
Bindings value: text: medical.enhancedTiers()[0].name
如果我将 html 更改为:
<span data-bind="text: medical.enhancedTiers()[0]"></span>
UI 呈现 [object 对象]。
我也试过使用映射插件,但也无法正常工作。
我显然有来自 json 响应的数据,但是我似乎无法在视图模型中获取它。有人对如何将我返回的 json 数组对象放入我的视图模型有任何建议吗?
如果我将 enhancedTiers json 硬编码到我的视图模型中,我可以毫无问题地将 UI 绑定到该数据,只是我似乎无法将我的数据放入视图模型中。
这是因为视图是在您填充 observableArray 之前呈现的,所以当时这些字段不存在。您必须检查您的绑定,例如:
<span data-bind="text: medical.enhancedTiers().length > 0 ? medical.enhancedTiers()[0].name : ''"></span>