如何访问模板中的控制器属性?

时间:2013-09-03 09:31:56

标签: ember.js handlebars.js

Here,我正在尝试访问控制器的属性,但它正在抛出异常  Uncaught TypeError: Object [object Object] has no method 'addArrayObserver'

模板代码:

{{#each itemController="index"}}                    
    <div class="row" {{bindAttr class="item.isWithBorder:border"}}>
        {{#each item in model}}        
            {{#each item in item.home_products}}    
                {{#each item in item.contents}}    
                    <li>{{item.product_name}}</li>
                {{/each}}
            {{/each}}
        {{/each}}        
    </div>
{{/each}}

我想仅为第一次迭代显示border属性,即第一个产品。 因此,在我在模板中访问的控制器中添加了一个属性。 控制器代码:

Astcart.IndexController = Ember.ObjectController.extend({
    init: function() {
        console.log("Item controller initialized");
        this._super();

    },      
    isWithBorder : function(){          
    return this.get("model.id") == 1;
    }.property("model.id")    

}); 

我已更新了我的代码Here

1 个答案:

答案 0 :(得分:1)

在这里工作jsfiddle:http://jsfiddle.net/fQNRk/2/

使用名称index作为itemController index的用户已经是保留名称,所以我现在只需将其更改为item即可。

Astcart.ItemController = Ember.ObjectController.extend({
  ...

{{#each itemController="item"}}
  ...

希望它有所帮助。