2

Emberには、ApplicationView、ApplicationController、および「application」という名前のテンプレートと「main」という名前のアウトレットを持つアプリケーションがあり、これらすべてが自動的に接続されます。例えば。

App.ApplicationView = Ember.View.extend();

App.ApplicationController = Ember.Controller.extend();

したがって、アプリケーション テンプレートがデフォルト コントローラをレンダリングするときはいつでも、

App.ApplicationController

テンプレートでアクセスできるプロパティ。しかし、他のビューやコントローラーでは機能しないのはなぜですか。

App.SongView = Em.View.extend()

と App.SongController = Em.Controller.extend() これら2つは接続しません。の任意のプロパティを使用できます

App.SongController

私の歌のテンプレートで。
私は次のように使用できます:

{{view App.SongView}}

そしてテンプレートで:

<script type='text/x-handlebars' data-template-name='song'>
    {{name}}
</script>

App.SongController に name プロパティがある場合、ビューに接続されていないため、取得されません。私はこのようにそれを行うことができますが

{{view App.SongView controllerBinding='App.songController'}}

ただし、これには js ファイルに App.songController のインスタンスが必要であり、このアプローチを使用して、コントローラーをテンプレートにハードコーディングしています。
これに最適な方法は何ですか?

更新 私はまた、私の問題のためにjsフィドルをここに添付しています: http://jsfiddle.net/anshulguleria/K6KPJ/

4

1 に答える 1

5

テンプレートとそれに関連付けられたコントローラーおよびビューをレンダリングする場合は、テンプレートを使用できます{{render}}。ルーターと同様に機能this.renderします。

{{render "song" song}}

この例では、とsongのインスタンスを使用してテンプレートをレンダリングします。コントローラーの値を現在のコンテキストの値に設定します。App.SongControllerApp.SongViewsongmodelsong

これがどのように機能するかを示す実際の JSBinを次に示します。

于 2013-01-18T07:46:49.083 に答える