リストに多数のオブジェクトがあり、このオブジェクトから<tr/>
要素を作成したいとしましょう。<table/>
私はこのようなものを作成しましたEmber.View
:
App.TableRowItem = Ember.View.extend({
classNames: ['list-row'],
templateName: 'admin/things/tableRow',
showActionRow: function() {},
edit: function() {},
save: function() {},
delete: function() {}
});
ここで、次のように、取得したリストの各オブジェクトの行項目を Handlebars テンプレートで生成したいと考えています。
<table id="someTable">
<thead>
<tr><th>Head1</th><th>Head2</th><th>Head3</th></tr>
</thead>
<tbody>
{{# each thing in controller.things}}
{{log thing}}
{{view App.TableRowItem contentBinding="thing" id="thing.id"}}
{{/each}}
</tbody>
</table>
id
のIDを持つ各要素のタグを作成する出力を行うことを期待していますthis.id
が、代わりに次のエラーメッセージが表示されます。
Uncaught Error: assertion failed: Attempted to register a view with an id already in use: this.id
私は何を間違っていますか?id
ヘルパー内でを設定しないと{{view}}
、上記と同じメッセージが表示されますが、id already in use: null
...
アップデート:
問題を解決できなかったのでidBinding
、次の解決策を試しましたApp.TableRowItem
。
App.TableRowItem = Ember.View.extend({
tagName: 'tr',
templateName: 'admin/things/tableRow',
// this is new!
init: function() {
var text = "";
var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
for( var i=0; i < 5; i++ ) {
text += possible.charAt(Math.floor(Math.random() * possible.length));
}
this.set('elementId', text);
}
});
今はエラーは表示されませんが<tr/>
、テンプレート ( admin/things/tableRow
)だけでなく、内容のない<div/>
my を表現しているように見える要素もあることがわかりApp.TableRowItem
ます!?
デバッグ中this.$()
に空<tr id="1fFxV" class="ember-view"></tr>
になり、tableRow
テンプレートに到達できthis.$().closest('tr').next()
ます...