0

Ember 内の別のビュー インスタンスのプロパティを観察する最善の方法を見つけようとしています。現在、正しく動作していないように見える次のコードがあります。ドキュメントを見ると、オブザーバーが自分のためだけに機能するかどうかについて何も見つからないようです。

App = Ember.Application.create();

App.ApplicationView = Ember.View.extend({
  myProperty: false,
  observerFiredCount: 0,

  testObserver: function() {
    var count = this.get('observerFiredCount');
    this.set('observerFiredCount', count + 1);
  }.observes('myProperty'),

  buttonClick: function(event) {
    if(this.get('myProperty')) {
      this.set('myProperty', false);
    } else {
      this.set('myProperty', true);
    }
  },

  willInsertElement: function() {
    var button = this.$('a');
    button.click($.proxy(this.buttonClick, this));
  }
});

App.TestObserverView = Ember.View.extend({
  testObserverAcrossViews: function() {
    console.log('hello world');
  }.observes('App.ApplicationView.myProperty')
});

ここで役立つ質問が 2 つあります。

1. 別のオブジェクト インスタンスのプロパティを観察することは可能ですか。

2. childview インスタンスにアクセスするには、どのパスを使用すればよいですか?

どんなフィードバックでも大歓迎です。これを行うためのよりクリーンな方法があるように感じます:)

4

1 に答える 1

1

あなたのすべての質問に対する答えは、間違った視点から問題に取り組んでいるということです。ビューが破壊されます。彼らは短命です。それらはグローバルには存在しません。コントローラーが必要です。コントローラーは長寿命であり、バインドされることを意図しています。ビューを観察しようとする代わりに、コントローラーを観察する必要があります。

そのため、ビューでクリック イベントが発生したら、コントローラーでプロパティを設定します。アプリケーションの他の部分は、コントローラーのそのプロパティにバインドできます。

于 2013-02-01T08:46:09.487 に答える