2013-08-16 2 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 fileds이므로 값을 계산할 수 없으며이 도우미의 결과는 NaN입니다.

이후모든 대답이로드됩니다.

어쨌든 App.PollsRoute 또는 내 도우미에서 관련 객체를 강제로드 할 수 있습니까?

답변

0

하여 사용해보십시오 : 대신

Ember.Handlebars.registerBoundHelper 

:

Ember.Handlebars.helper 
+0

당신이 도우미에 대한 설명서 http://emberjs.com/guides에 가면'helper'는 registerBoundHelper' – intuitivepixel

+0

'에 해당/templates/writing-helpers/"DEPENDENCIES"섹션을 찾으십시오. 속성 변경을 관찰하는 방법과 http://emberjs.com/api/classes/Ember.Handlebars로 이동하는 방법을 찾을 수 있습니다. .html # method_registerBoundHelper 당신은 그렇게 할 필요가 없다는 것을 알게 될 것입니다. – fanta

+0

하지만 그래서'App.AnswersRoute'에서 나는 이것을해야만했다'var poll = App.Poll.find ('1'); poll.get ('store'). findMany (App.Answer, [ '3', '4']); 반환 투표; – redexp