2

我有一个 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/

4

2 回答 2

0

在构造函数中传递视图模型可以访问父级,这是一个好习惯吗?

只需在构造函数中传递allSports数组。Row另外,正如我所见,您不会更改运动列表,因此最好allSports使用常数而不是ko.observableArray.

于 2013-02-13T09:36:29.497 回答
0

你应该做的是通过Row构造函数传递父级。然后,您将可以轻松访问 Row 的父级。

它看起来像:

class Row
    constructor: (parent) ->
    ...

然后您可以parentRow.

构造 Row 也会略有变化:

@rows = ko.observableArray [new Row(this)]
于 2013-02-12T19:37:37.210 回答