Ember.js - 如何强制加载相关对象?

时间:2013-08-16 16:38:44

标签: javascript arrays ember.js has-many

我有两个型号

App.Poll = DS.Model.extend({
    id:         DS.attr('string'),
    title:      DS.attr('string'),
    answers:    DS.hasMany('App.Answer')
});

App.Answer = DS.Model.extend({
    id:         DS.attr('string'),
    value:      DS.attr('number')
});

App.Poll.FIXTURES = [{
    id:         '1',
    title:      'PollTitle',
    answers:    ['3', '4']
}];

App.Answer.FIXTURES = [{
    id:         '3',
    value:      1
},{
    id:         '4',
    value:      2
}];

App.PollsRoute = Ember.Route.extend({
    model: function(){
        return App.Poll.find('1');
    }
});

我创建了helper,它计算模型数组中指定字段的值

Ember.Handlebars.helper('fieldSum', function(arr, ops){
    var res = 0;

    arr.forEach(function(item){
        res += item.get(ops.hash.field);
    });

    return new Handlebars.SafeString(res);
});
<div class="count">{{fieldSum answers field="value"}}</div>

但是在帮助者身体中我得到了空(未加载)answers,只有id个文件,所以我无法计算他们的值,这个助手的结果是NaN

但在{{#each answers}}加载所有答案后。

我可以以某种方式强制加载App.PollsRoute或我的助手中的相关对象吗?

1 个答案:

答案 0 :(得分:0)

尝试使用:

Ember.Handlebars.registerBoundHelper

而不是:

Ember.Handlebars.helper