【发布时间】:2013-06-27 22:24:38
【问题描述】:
这可能很基本,但我似乎无法弄清楚。问题来了
我有一个带有可观察数组“self.product”的视图模型,并希望从嵌套模型中访问它,如下所示。当我运行它时,我得到一个产品不存在的错误。我没有包含代码,但是有一个 ajax 调用可以获取数据并将其推送到“产品”。在函数“test”上使用点击绑定也会打印值。
虽然这可能是“self”的范围问题,但由于我在标记的 foreach 绑定中使用了“product”数组,因此我不能只将 self.product... 更改为 var product。我怎样才能做到这一点?
var viewModel = function () {
var self = this;
self.product = ko.observableArray([]);
var orderItem = function (data) {
var self = this;
self.PlayDuration = ko.computed(function () {
var foo = self.product()[0].something();
return foo;
});
}
self.updateTotals = function () {
console.log(self.product()[0].something());
}
});
【问题讨论】:
-
你正在隐藏
self与orderItem上的内部声明(我什至没有看到它被使用)。如果您将代码放在小提琴中,我们可以提供更多帮助。 -
产生错误的post code。
-
orderItem 也是从 AJAX 填充的。我会尝试为提琴手整理一些东西,但它非常依赖于来自服务器的数据。代码在这一行失败 var foo = self.product()[0].something();
-
一个调用从服务器获取数据并将其推送到“self.product”,然后当它完成时,另一个调用获取数据并将 orderItems 推送到另一个可观察数组中。它在第一次命中计算函数时失败
-
@Tyrsius 如果您能以答案的形式发表您的评论,我会接受。都是关于范围的
标签: knockout.js ko.observablearray