我继承了一个使用 Knockout 的项目^3.1.0。我需要构建一些功能。我从来没有使用过淘汰赛。
每个视图都有一个视图模型,该视图模型是通过主视图模型调用的init(model)。
这些属性在 init 开始时初始化并在视图中使用,没有任何问题。例如:
model.entities = ko.observableArray([]);
model.hasEntities = ko.observable(false);
Run Code Online (Sandbox Code Playgroud)
如此初始化并在无容器绑定中使用时不会出现错误,如下所示:
<!-- ko if: hasEntities -->
<!-- ko foreach: { data: entities, as: 'entity' } -->
Run Code Online (Sandbox Code Playgroud)
因此,我以相同的位置/方式初始化我的新属性:
model.numberOfColumns = ko.observable(2);
model.columnGenerator = ko.computed(function() {
return ko.utils.range(0, model.numberOfColumns());
}, model);
Run Code Online (Sandbox Code Playgroud)
并这样使用它:
<!-- ko foreach: { data: columnGenerator, as: 'index' } -->
Run Code Online (Sandbox Code Playgroud)
并得到这个错误:
Knockout.js:72 Uncaught ReferenceError: 无法处理绑定“foreach: function (){return { data:columnGenerator,as:'index'} }”消息:columnGenerator 未定义
我搜索了与此错误相关的许多问题,但没有一个有帮助。
谢谢!
那是因为你的
<!-- ko foreach: { data: columnGenerator, as: 'index' } -->
Run Code Online (Sandbox Code Playgroud)
在与范围(定义的位置)不同的范围中解释。$rootcolumnGenerator
试试这个:
<!-- ko foreach: { data: $root.columnGenerator, as: 'index' } -->
Run Code Online (Sandbox Code Playgroud)
请参阅绑定上下文
| 归档时间: |
|
| 查看次数: |
8369 次 |
| 最近记录: |