あなたがしなければならない最も重要なことは、最初にできるだけ多くのロジックをビューから離れてコントローラーに移動することだと思います。
あなたの場合に役立つもう1つのことはitemController
、リストに各製品を含めることです。そうすれば、このアイテム コントローラーでアイテム固有のロジックを処理できます。
あなたのアーキテクチャを理解するのに十分な情報がないので、いくつかの仮定を立てます。
あなたが以下を持っているとしますProductsController
:
App.ProductsController = Ember.ArrayController.extend();
ProductController
すべての製品を独自にラップするために作成されるを作成する必要があります。
App.ProductController = Ember.ObjectController.extend();
テンプレートを次のように変更する必要があります。
{{#each controller itemController="product"}}
<li>name</li>
{{/each}}
これで、リスト内のすべての製品が独自の を持ちProductController
、1 つの製品のイベントを処理でき、すべてのリスト アイテムのコンテキストとして機能します。
別のオプション:
一度に 1 つの製品のみを処理する場合は、ルートを使用して、作業している製品を説明できます。
App.Router.map(function() {
this.resource('products', { path: '/products' }, function() {
this.resource('product', { path: '/:product_id' }, function() {
this.route('edit');
});
});
});
そして、製品を編集するためのコントローラーを作成します。
App.ProductEditController = Ember.ObjectController.extend();
そして、リスト項目はその製品ルートにリンクします:
{{#each controller}}
<li>{{#linkTo "product.edit" this}}name{{/linkTo}}</li>
{{/each}}