我正在尝试使用EMber JS的datatable jquery插件。看起来像Ember试图用一些新数据更新DOM的那一刻,它在数据表设置样式并插入一些元素如搜索栏,twitter引导分页页脚等后出现问题。代码如下
App.TableView = Em.View.extend({
classNames:['table','table-striped','table-bordered','dataTable'],
tagName:'table',
didInsertElement:function (){
this.$().dataTable({
"sPaginationType": "bootstrap",
"oLanguage": {
"sLengthMenu": "_MENU_ records per page"
}
});
}
});
把手的用法如下:
{{#view App.TableView }}
{{view App.ListStaffView}}
{{/view}}
App.ListStaffView中包含以下内容
App.ListStaffView = Ember.View.extend({
templateName: 'list',
staffBinding: 'App.staffController',
showNew: function() {
this.set('isNewVisible', true);
},
hideNew: function() {
this.set('isNewVisible', false);
},
refreshListing: function() {
App.staffController.findAll();
}
});
,列表模板如下
<thead>
<tr>
<th>Name</th>
<th>Email</th>
</tr>
</thead>
<tbody>
{{#each staff}}
{{view App.ShowStaffView staffBinding="this"}}
{{/each}}
</tbody>
<tfoot>
<div class="commands">
<a class="btn btn-inverse" href="#"{{action "showNew"}}>
<i class="icon-plus"></i>
</a>
<a class="btn btn-inverse" href="#"{{action "refreshListing"}}>
<i class="icon-refresh"></i>
</a>
</div>
</tfoot>
加载后的错误就像这样
错误:无法对Metamorph执行操作
我使用零配置进行了数据表集成,但失败了。由于Ember无法将数据插入DOM,因此JQuery数据表不断说“无数据”
答案 0 :(得分:1)
数据表可以在某些预期的DOM结构上正常工作,同样适用于Ember。如果您同时使用两者,则会修改其他预期的DOM结构。这就是问题的原因。
如果您决定使用Ember,则使用Ember小部件库,例如用于TableView的flame.js。
答案 1 :(得分:1)
我遇到了同样的问题,并且能够通过在保存表格的视图上调用rerender()来解决问题。
例如,在我看来,我有一个名为editRow()的方法,它将表格文本更改为输入框。我是这样做的:
editRow: function(event) { var obj = event.context; obj.setIsEditing(true); this.rerender(); }
答案 2 :(得分:0)
您不能在表格中使用#each
帮助程序,该表格将被DataTables表“覆盖”。