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

Ember.js - how to force loading of related objects?

本文关键字:对象 加载 何强制 js- Ember      更新时间:2023-09-26

我有两种型号的

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

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

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或我的助手中强制加载相关对象吗?

尝试使用:

Ember.Handlebars.registerBoundHelper

而不是:

Ember.Handlebars.helper