Knockout无法处理绑定 - 未定义

时间:2016-10-13 15:08:42

标签: knockout.js

我使用Knockout ^3.1.0继承了一个项目。我需要构建一些功能。我从未使用过Knockout。

每个视图都有一个视图模型,该视图模型使用init(model)从主视图模型调用。

属性在init的开头初始化,并在视图中使用,没有任何问题。例如:

model.entities = ko.observableArray([]);
model.hasEntities = ko.observable(false);

如此初始化并在无容器绑定中无错误地使用:

<!-- ko if: hasEntities -->
<!-- ko foreach: { data: entities, as: 'entity' } -->

所以我在同一个地方/方式初始化我的新属性:

  model.numberOfColumns = ko.observable(2);

  model.columnGenerator = ko.computed(function() {
    return ko.utils.range(0, model.numberOfColumns());
  }, model);

并使用它:

<!-- ko foreach: { data: columnGenerator, as: 'index' } -->

并收到此错误:

  

knockout.js:72未捕获的ReferenceError:无法处理绑定&#34; foreach:function(){return {data:columnGenerator,as:&#39; index&#39;}}&#34;   消息:未定义columnGenerator

我已经搜索了许多与此错误相关的问题,但没有人帮助过。

谢谢!

1 个答案:

答案 0 :(得分:2)

那是因为你的

<!-- ko foreach: { data: columnGenerator, as: 'index' } -->

在与$root范围不同的范围中进行解释(其中columnGenerator已定义)。

请改为尝试:

<!-- ko foreach: { data: $root.columnGenerator, as: 'index' } -->

请参阅Binding-Context