2013-08-16 25 views
1

我有兩個型號Ember.js - 如何強制加載相關對象?

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或我的幫手中的相關對象嗎?

回答

0

嘗試使用:

Ember.Handlebars.registerBoundHelper 

代替:

Ember.Handlebars.helper 
+0

'helper'等同於'registerBoundHelper' – intuitivepixel

+0

如果你去到文檔的輔助http://emberjs.com/guides/templates/writing-helpers /你會找到一個名爲「DEPENDENCIES」的部分,在那裏,你可以找到如何觀察屬性的變化,如果你去http://emberjs.com/api/classes/Ember.Handlebars .html#method_registerBoundHelper你會發現你不需要那樣做 – fanta

+0

但是al所以'App.AnswersRoute'我不得不這樣做var var = App.Poll.find('1'); poll.get('store')。findMany(App.Answer,['3','4']);返回民意調查;' – redexp