2012-07-04 2 views
2

다음 상황에 처해 있습니다.Marionette.Composite 어떤 모델도 사용하지 않고 템플릿에 매개 변수를 전달하는 방법

collection.length = 0listTemplate에 메시지를 표시하려면 listTemplate에 매개 변수를 전달하고 싶습니다 (모델이 없습니다!). 목표를 달성하려면 어떻게해야합니까?

여기 내 코드가 있습니다.

var ListView = Marionette.CompositeView.extend({ 
    template: listTemplate, 
    // some code 
}); 

var itemView = Marionette.ItemView.extend({ 
    // some code 
}); 

-

app.mainColumn.show(new ListView({ 
    collection: tasks, 
    vent: myApp.vent 
})); 
+0

컬렉션이 비어있을 때 CollectionView의 [emptyView] (http://marionettejs.com/docs/v2.4.1/marionette.collectionview.html#collectionviews-emptyview)를 사용하여 다른보기를 사용할 수 있습니다. – DiegoG

답변

7

나는 당신이 serializeData 메소드를 재정의 할 수있는 것 같아요.

 
var ListView = Marionette.CompositeView.extend({ 
    template: listTemplate, 
    serializeData: function(){ 
    viewData = { foo: 'foo' }; 
    if(this.collection.length == 0) viewData.bar = 'bar'; 
    return viewData; 
    } 
}); 

그래서 템플릿, this.bar은 (컬렉션이 비어있는 경우에만) 사용할 수 있습니다.

3

사용할 템플릿을 프로그래밍 방식으로 설정하고 변수 전달을 건너 뛸 수 있습니다. 예를 들어 :

getTemplate: function(){ 
    if (this.collection.length == 0){ 
     return "#no-models-are-present-template"; 
    } else { 
     return "#regular-template"; 
    } 
} 

출처 : https://github.com/marionettejs/backbone.marionette/blob/master/docs/marionette.view.md#change-which-template-is-rendered-for-a-view

이 또는 당신이 빈보기
https://github.com/marionettejs/backbone.marionette/blob/master/docs/marionette.collectionview.md#collectionviews-emptyview)
를 설정하거나 동일한 결과를 달성하기 위해 템플릿 도우미 https://github.com/marionettejs/backbone.marionette/blob/master/docs/marionette.view.md#object-or-function-as-templatehelpers
를 사용할 수 있습니다.

빈 컬렉션에 해당하는 경우 템플릿이 일치하는 빈보기를 사용합니다.

관련 문제