【问题标题】:Knockout Can't Access ObservableArray from inside model淘汰赛无法从模型内部访问 ObservableArray
【发布时间】: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());
        }
});

【问题讨论】:

  • 你正在隐藏selforderItem 上的内部声明(我什至没有看到它被使用)。如果您将代码放在小提琴中,我们可以提供更多帮助。
  • 产生错误的post code。
  • orderItem 也是从 AJAX 填充的。我会尝试为提琴手整理一些东西,但它非常依赖于来自服务器的数据。代码在这一行失败 var foo = self.product()[0].something();
  • 一个调用从服务器获取数据并将其推送到“self.product”,然后当它完成时,另一个调用获取数据并将 orderItems 推送到另一个可观察数组中。它在第一次命中计算函数时失败
  • @Tyrsius 如果您能以答案的形式发表您的评论,我会接受。都是关于范围的

标签: knockout.js ko.observablearray


【解决方案1】:
var root = this;

将该行添加到最外层视图模型并在内部视图模型中使用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-23
    相关资源
    最近更新 更多