2013-02-12 3 views
0

밑줄 템플릿에 문제가 있습니다.밑줄 템플릿이 marionettejs에 정의되지 않았습니다.

응용 프로그램을 시작할 때 현재 사용자를 가져옵니다. 그래서 나는 쿠키에서 가져 오는 ID를 전달하여 인스턴스를 만듭니다. 이 모델을 뷰에 전달하고 거기서 가져옵니다 (비동기적인 부분은 중요하지 않습니다).

은 내가 require.js 플러그인 (var에 MSG)에 의해 약간의 국제화를 가지고, 그래서 내가 기능 serializeData 사용 : 나는 가능하면 사용자 이름을 표시 할 내 밑줄 템플릿에서

if (this.model.attributes.name) { 
    msg.model = this.model.toJSON(); 
} 

return msg; 

를, 그래서 내가

<% var model = model; if (model) { %> 
    <%= model.name.givenName %> 
<% } %> 

나는 내가 var model = model 전화를 해달라고 경우가 undefined error가 발생하기 때문에 심지어 if (model)에 의해 그 존재를 확인할 수 없다고 파악.

나는 더 잘하는 방법을 모르기 때문에 이것에 대해 조금 나쁘다고 느낍니다. 어쩌면 내가 microtemplating 대신 핸들이나 콧수염을 사용해야합니다. 이 못생긴 문제를 어떻게 해결할 수 있습니까?

답변

0

당신은 자바 스크립트의 이상한 문법 함께 할 수있는 뭔가가이

if (typeof model != "undefined" && model.name != undefined && model.name.givenName != undefined) { 
    ... 
} 

처럼 확인해야합니다.

+0

"이상한 문법"과 관련이 없으므로 [언더 스코어] 템플릿과 ['with'] (https://developer.mozilla.org/en-US/docs/JavaScript/Reference)를 사용해야합니다./Statements/with)를 사용하여 객체를 사용하여 여러 로컬 변수를 시뮬레이트합니다. 컴파일 된 템플릿 함수의'source' 속성을 살펴보면'with'가 보일 것입니다. –

관련 문제