标题可能听起来很愚蠢,请考虑以下代码
我的把手档案
<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()
})
我希望它在#main-table中呈现4个表,而是将它们呈现在#main-table之外,因为它将itemViewClass
包含在默认的div
标记内。我只能更改tagName
属性但不能将其设置为nil我猜,这个问题有什么问题吗?
回答第一个答案
{{each}}的问题在于,我使用的是EditableField,如下所示:
(只是为了听起来清晰,可编辑的字段是在双击时将div更改为文本字段并在焦点上返回到div标签,使用ember构建的简单小部件)
更新了Handlebars文件
<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中的值发生更改时触发,以便我可以更新数据库中的记录。我们可以使用{{each}}帮助器完成这件事吗?另外,只有在数组长度发生变化时才会触发arrayContentDidChange
答案 0 :(得分:8)
可以在Ember View中执行此操作
App.MyView = Ember.View.extend({
tagName: ''
});
答案 1 :(得分:4)
AFAIK,在DOM中没有“真实存在”的Ember.View,但如果你不想添加充当容器的视图,你可以使用{{each}}
助手(这里一个Ember.CollectionView
)。
将tagName
设置为null
不起作用,see Ember.View source code。
模板:
<script type="text/x-handlebars">
<table id="main-table">
<tr>
<td>
<h1>Some Text</h1>
</td>
{{#each App.content}}
<td>
<table><tr><td>{{name}}</td></tr></table>
</td>
{{/each}}
</tr>
</table>
</script>
代码:
App = Ember.Application.create();
App.content = [{name: "foo"}, {name: "bar"}, {name: "baz"}];
请参阅this JSFiddle。