0

この質問はObjectController の「コンテンツ」を表示する方法に少し関連していますか? ただし、提供されたソリューションと他のすべての例では、コントローラーが常に明示的に作成されていることがわかります。Ember.js の良いところは、Route がほとんどすべてを処理することです。だから私はコントローラーを作成したくありませんが、それをビューにバインドしたいです:

{{view App.myview controllerBinding="App.applicationController"}}

この fiddleで完全な例を見ることができます。Ember は通常、子ビューのコントローラーをその親ビューに設定するため、この例はそれほど素晴らしいものではありません。

最後に、ビューから Ember によって作成されたコントローラーにアクセスする方法を知る必要があります。

助けてくれてありがとう!

更新: 間違ったフィドルを指定したか、変更が保存されませんでした。正しいバージョンへのリンクは次のとおりです: http://jsfiddle.net/ncaZz/1/

テンプレートの 9 行目には何を指定すればよいですか?

4

2 に答える 2

0

実際にバインドする必要はありません。このように呼び出すことで、ビューからコントローラーにアクセスできます。

this.get('controller');

更新された回答:

ビュー内にクリックイベントを含めるべきではありません。アクションは、コントローラーまたはルーターのいずれかにある必要があります。

テンプレートは次のようになります

<span style="background-color: green" {{action doStuff}}>
    Click
</span>

そして、これを持つべきコントローラが必要です

App.MyController = Em.Controller.extend({
    needs: ['application'],
    doStuff: function(){
       this.get('controllers.application').foo();
    }
});

また、MyView と MyController は大文字にする必要があります。これは、インスタンスではない ember からこれらのアイテムを拡張するときに大文字が必要なためです。ビューには、あらゆる種類の jquery アニメーションや日付ピッカーの初期化などの特別なことを処理する didInsertElement のみが含まれている必要があります。ただし、「残りの方法」は、ルーターまたはコントローラーでアクションを実行することです。

于 2013-04-16T23:20:00.920 に答える
0

ビューから、コントローラーにアクセスできます

this.controller

ビューコントローラー以外のコントローラーが必要な場合は、ビューコントローラーでニーズを使用できます。

App.DatasetEditController = Ember.ObjectController.extend({
  needs: ['mappingIndex']
});

そして、次を使用します。

this.controller.mappingIndex
于 2013-04-17T09:46:39.963 に答える