0

だから、単純なpropertyBindingをemberjsで動作させようとしています。具体的には、特定の状況下で更新されるコンテンツ プロパティを持つコントローラーと、チャートを描画するためにそのコンテンツ配列を必要とするビューがあります。

最も基本的な例を作成しましたが、うまくいかないようです。私の簡単な例は次のとおりです。

Appname.IndexController = Ember.Controller.extend({
    value: 'bla'
});

Appname.IndexView = Ember.View.extend({
    templateName: 'Index',
    propertyBinding: 'Appname.IndexController.value',
    didInsertElement: function() {
        console.log('Indexview');
        console.log(this.get('property'));
    }
 });

それはそれと同じくらい簡単で、うまくいきません。ただし、別のテストコントローラーを作成すると(拡張するのではなく)、たとえば

Appname.TestController = Ember.Controller.create({
    value: 'jpopo'
});

プロパティバインディングが突然機能します。しかし、私はそれをIndexControllerで動作させることができません(そして、情報が必要な場合は、Applicaton.hbsにアウトレットがあります)助けてくれてありがとう

4

1 に答える 1

1

バインディングは、オブジェクト定義ではなく、インスタンス化されたオブジェクトに対して機能します。

Appname.IndexControllerインスタンスではなく、コントローラーの定義です。バインドしたいものではありません。Ember.js アプリは のインスタンスをIndexController作成します。バインドするのは、その作成されたインスタンスです。

ビューから実際のコントローラ インスタンスにアクセスするには、 を使用しますcontroller

Appname.IndexView = Ember.View.extend({
  templateName: 'index',
  propertyBinding: 'controller.value',
  didInsertElement: function() {
    console.log(this.get('property'));
  }
});

もちろん、それはEmber.js の規約に従っている場合です。

于 2013-03-13T17:06:34.327 に答える