タイトルはばかげているように聞こえるかもしれません。次のコードを検討してください
私のハンドルバーファイル
<table id="main-table">
<tr>
<td>
<h1>Some Text</h1>
</td>
{{#collection myCollectionView}}
<td>
<table>
<tr><td>{{view.someProperty}}</td></tr>
</table>
</td>
{{/collection}}
</tr>
</table>
マイビューファイル
myCollectionView = Ember.CollectionView.extend({
contentBinding: "myController.someArray",
//someArray has say 4 elements
itemViewClass: Ember.View.extend()
})
itemViewClass
4つのテーブルを#main-table内にレンダリングしたいのですが、デフォルトのdiv
タグの内側を囲んでいるため、代わりに#main-tableの外側にレンダリングします。プロパティを変更することしかtagName
できませんが、nilに設定することはできません。この問題のハックはありますか?
最初の回答への回答
{{each}}の問題は、次のようにEditableFieldを使用していることです:(
明確に聞こえるように、編集可能なフィールドは、ダブルクリックしてdivタグに戻るとdivをテキストフィールドに変更するフィールドですフォーカスアウト、残り火を使用して構築されたシンプルなウィジェット)
更新されたハンドルバーファイル
<table id="main-table">
<tr>
<td>
<h1>Some Text</h1>
</td>
{{#collection myCollectionView}}
<td>
<table>
<tr><td>{{view.myEditableField valueBinding="view.content"}}</td></tr>
</table>
</td>
{{/collection}}
</tr>
</table>
更新されたビューファイル
myCollectionView = Ember.CollectionView.extend({
contentBinding: "myController.someArray",
//someArray has say 4 elements
itemViewClass: Ember.View.extend({
alertFunc: function(){
alert("content did change");
}.observes('content')
})
})
データベース内のレコードを更新できるように、editableFieldの1つの値が変更されるたびにオブザーバーを起動する必要があります。{{each}}ヘルパーを使用してこのことを達成できますか?また、arrayContentDidChangeは、配列の長さが変更された場合にのみ起動します