2011-11-22 5 views
1

필자는 속성이있는 백본 모델과 실제 속성 (예 : 서식 지정 용) 이외의 다른 출력 방법을 사용합니다.도우미 메소드가있는 백본 toJSON

그러나 toJSON을 호출하면 속성 만 반환되므로 콧수염 템플릿이 해당 도우미 메서드에 액세스 할 수 없습니다. 이 문제를 해결할 방법이 있습니까? 아니면 제가 취해야 할 다른 접근법이 있습니까?

서식있는 버전의 특성을 만들고 속성이 변경 될 때마다 업데이트하는 유일한 방법은 무엇입니까?

답변

6

호르헤, 나는 내 자신의 메서드에서 toJSON을 확장하고 템플릿에 새롭게 추가 된 json을 제공합니다. 그래서 같은

:

var userModel = Backbone.Model.extend({ 
    initialize: function(){ 
     _.bindAll(this, 'fullname', 'toFullJSON'); 
    }, 
    fullname: function(){ 
     return this.get('name') + " " + this.get('lastname'); 
    }, 
    toFullJSON: function(){ 
     var json = this.toJSON(); 
     return _.extend(json, {fullname : this.fullname()}); 
    } 
}); 

var user = new userModel(); 
u.set({name: 'John', lastname: 'Doe'}); 

// you will see in this console log, that the toFullJSON function returns both the toJSON properties, and your added propert(y)(ies)... 
console.log(u.toFullJSON()); 
+0

Beautiful. 감사 :) –

0

JSON이 올바른지 확인하십시오. 객체를 반환하는 경우 JSON에서 지원되지 않으며 아마도 생략 될 수있는 몇 가지 역 참조가있을 수 있습니다.

+0

감사합니다! 하지만 미안해, 정교 할 수있어? Backbone.js 'toJSON 메서드는 모델의 특성 개체의 JSON 만 반환하지만 반환 된 JSON에 표시 할 모델의 일부 기능이 있으므로 콧수염 템플릿에서 도우미로 사용할 수 있습니다. backbone.js로 이것을 수행하는 기본 방법이 있는지 궁금합니다. –