我正在尝试使用ember中的{{render}}工作。
控制器:
App.NavigationController = Ember.ArrayController.extend({
itemController: 'navSheet',
init: function() {
this._super();
this.set( 'content', [
{ name: 'Sheet 1', type: 'Sheet', id: 1 },
{ name: 'Sheet 2', type: 'Sheet', id: 2 }
]);
}
});
App.NavSheetController = Ember.ObjectController.extend({
getID: function() {
return 'sheet-' + this.get( 'id' );
}
});
然后我使用{{render "navigation"}}
使用以下徽章模板进行渲染:
ul
each controller.content
li data-type=type! id=getID! = name
[更新输出]
在这里使用“controller.content”,我会遍历内容。使用“每个”这是不可用的。但是,在任何情况下,itemController都不在循环内的上下文中。生成的HTML是:
<li data-type="Sheet" id="">
<script id="metamorph-8-start" type="text/x-placeholder"></script>Sheet 1
<script id="metamorph-8-end" type="text/x-placeholder"></script></li>
<li data-type="Sheet" id="">
<script id="metamorph-9-start" type="text/x-placeholder"></script>Sheet 2
<script id="metamorph-9-end" type="text/x-placeholder"></script></li>
请特别注意,“getID”值不会显示。实际上我似乎根本无法访问itemController。我做错了什么?
答案 0 :(得分:0)
我从来没有使用过徽章,所以我并不完全理解这个模板,但如果我理解正确的话,你会尝试将sheetId放入li中,并且你正在使用getID函数来完成这项工作。我猜想Emblem会把它转换成这个模板
<li {{bind-attr data-type=type dataid=getID}}>
但是看起来你正在做getID!=name
或类似的事情。这种逻辑不适用于把手。
现在getID不会运行,因为它需要是一个计算属性
App.NavSheetController = Ember.ObjectController.extend({
getID: function() {
return 'sheet-' + this.get( 'id' );
}.property('id')
});