ember.jsライブラリを使い始めたばかりです。私はデータテーブルを表示したい、そして、各行の右側に、そのアイテムをテーブルから削除するための削除ボタンがある。私はこれをどうやって行うのか分かりません。ember.jsコレクションビュー内のアイテム固有のアクション
また、子ビュー(ItemView)を作成して{{#each ...}} ... {{/ each}}セクション内でインラインで使用しようとしましたが、ember.jsはItemViewはEmber.View.createを使用して定義されていますが、ItemViewではなくビュークラスです。それがなぜ機能していないのかも知りたいです。ドキュメントの#ブロックごとに子ビューを使用するためのサンプルコードでさえ、動作しません。
個々のItemを描画するためにItemViewという子ビューを宣言できたとしても、その特定のビューのremoveItemアクションを取得してitemsControllerコレクションからどのアイテムを削除するかを知ることはできません。子ビューがコレクションにバインドされているItemインスタンスを取得するビューのプロパティはありますか?
{{#each App.itemsController}}
<tr>
<td>{{itemName}}</td>
<td><a href="#" {{action "removeItem" on="click"}}>Delete</a></td>
</tr>
{{/each}}
そして、ここに私のjavascriptです:ここで
は、リストを持っている私のビューテンプレートの一部である最良の方法この場合
window.App = Ember.Application.create();
window.App.Item = Ember.Object.extend({
itemName: "defaultItemName"
});
window.App.itemsController = Ember.ArrayProxy.create({
content: []
});
window.App.ListView = Ember.View.create({
templateName: 'listView',
removeItem: function (event) {
// ??? How do I figure out what item
// the user wanted to remove?
}
});
OK、私はこの方法をしようとすると、テンプレートエンジンは、私は{{#each内のビューテンプレートに入れどのやタグを無視しているようだと遊ぶことができます。.. 。}} ... {{/ each}}ブロック。それらを完全に取り除くだけです。それらは取り除かれた唯一のタグです。
OK、この質問に回答するつもりです。テンプレートの問題は別の問題のようです。お返事ありがとうございます。 –
@JeremyBell re:タグがありません。あなたは{{#each}}ブロックを '
'タグで囲んでいますか?そうでない場合は、「」と「」タグが削除されます。 –わからないが、私は入れていますアイテムインデックスまたはアイテム名をタグのプロパティとして使用し、jQueryを使用して取得します。
これが役立ちます。
出典
2012-02-06 23:25:14 Veebs
Tのおかげでom Whatmoreフィドル私は同じ質問に答えました。
trek introを読んだ後、
personBinding="this"
の代わりに、{{action removeItem person}}
を使用して、動作を実行するオブジェクトを明示的に指定したいと思います。私は
var person = evt.context;
を使用して人物オブジェクトを取得します。あなたはこのフィドルjsfiddle.net/67GQb/127
出典
2012-12-23 09:59:55 penkovsky
[ ArrayControllerドキュメンテーション](http://emberjs.com/api/classes/Ember.ArrayController.html)、概念的にはコントローラであるため、ArrayProxyではなくArrayControllerを使用することをお勧めします。 – penkovsky
関連する問題