Mud*_*Ali 4 handlebars.js ember.js
标题可能听起来很愚蠢,请考虑以下代码
我的把手文件
<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>
Run Code Online (Sandbox Code Playgroud)
我的查看文件
myCollectionView = Ember.CollectionView.extend({
contentBinding: "myController.someArray",
//someArray has say 4 elements
itemViewClass: Ember.View.extend()
})
Run Code Online (Sandbox Code Playgroud)
我希望它在#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>
Run Code Online (Sandbox Code Playgroud)
更新的视图文件
myCollectionView = Ember.CollectionView.extend({
contentBinding: "myController.someArray",
//someArray has say 4 elements
itemViewClass: Ember.View.extend({
alertFunc: function(){
alert("content did change");
}.observes('content')
})
})
Run Code Online (Sandbox Code Playgroud)
我希望只要更改其中一个editableField中的值,就会触发一个观察者,以便我可以更新数据库中的记录.我们可以使用{{each}}帮助器完成这件事吗?另外,arrayContentDidChange只会在数组长度发生变化时触发
可以在Ember View中执行此操作
App.MyView = Ember.View.extend({
tagName: ''
});
Run Code Online (Sandbox Code Playgroud)