2

ko.observableArrayがあり、observable配列のアイテムのサブスクライバーを追加しました。 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

あなたがすべきことは、Rowコンストラクターを通して親を渡すことです。そうすれば、行の親に簡単にアクセスできるようになります。

次のようになります。

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

parent次に、内からアクセスできますRow

行の作成もわずかに変更されます。

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

コンストラクターでビューモデルを渡すと、親にアクセスできますが、これは良い習慣ですか?

コンストラクターallSportsに配列を渡すだけです。また、スポーツのリストは変更しないので、の代わりに定数を作成するRow方がよいでしょう。allSportsko.observableArray

于 2013-02-13T09:36:29.497 に答える