我有一个ko.observableArray,我为可观察数组中的项添加了一个订阅者:
eventDate.subscribe(function(newDate) { ... }
在该处理程序中,我无法访问视图模型的父级或根目录。
当我访问this
时,我会引用window
。我想要做的是访问包含可观察数组的范围。 (我已经在coffeescript中尝试了普通和胖箭头=>
作为范围)。
我的理由是我有数据,我不希望在每个项目的可观察数组中重复/引用。我大部分都有骨干经验,所以也许这不是“knockout.js”的方式。
我的目标是ko.applyBindings new MainModel()
而不是在window
中为我的模型添加引用。
我创建了一个jsfiddle来演示: http://jsfiddle.net/brianzinn/r4bd8/
感谢。有人知道解决方案吗?
在构造函数中传递视图模型可以访问父级,这是一个很好的做法吗? http://jsfiddle.net/brianzinn/r4bd8/7/
答案 0 :(得分:0)
您应该做的是将父级向下传递给Row
构造函数。然后,您可以轻松访问Row的父级。
看起来像是:
class Row
constructor: (parent) ->
...
然后,您可以在parent
内访问Row
。
构建行也会略有改变:
@rows = ko.observableArray [new Row(this)]
答案 1 :(得分:0)
在构造函数中传递视图模型可以访问父项,这是一个很好的做法吗?
在allSports
构造函数中传递Row
数组。
另外,因为我看到你没有更改体育列表,所以如果你将allSports
设为常数而不是ko.observableArray
会更好。