【发布时间】:2013-11-06 23:50:41
【问题描述】:
标题可能听起来很愚蠢,请考虑以下代码
我的车把文件
<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 构建的简单小部件)
更新的把手文件
<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')
})
})
我希望在可编辑字段之一中的值发生更改时触发观察者,以便我可以更新数据库中的记录。我们可以使用 {{each}} 助手完成这件事吗?此外,arrayContentDidChange 只会在数组长度发生变化时触发
【问题讨论】:
-
你能发布 myEditableFieldView 的代码吗?也许你可以用一个简单的 ` 替换它
-
您仍然可以访问子视图/父视图,如在此 JSFiddle 中:jsfiddle.net/ZsrWe。如果仍然不够,也许您将不得不使用
Ember.ContainerView。但就个人而言,我认为你的模板不是很干净,例如CollectionView应该更多地用作<tbody>或直接用作<table>。 -
@sly7_7: jsFiddle for Editable Field
-
@louiscoquio :我想有表格列,这是一个模糊的例子,我正在使用 & 当然,{{collection}} 的代码在我的 标签中跨度>