ember渲染w / ArrayController

时间:2014-03-03 05:38:44

标签: ember.js

我正在尝试使用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。我做错了什么?

1 个答案:

答案 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')
});