2013-05-17 2 views
0

컬렉션의 각 항목에 대한보기를 렌더링합니다. 각 항목에는 ul에 추가하려고하는 목록이 포함되어 있지만 현재 표시되고 있습니다. 다른보기의 ul에 추가됩니다.현재보기에서 클래스에 추가하려고 시도했지만 다른보기에 추가하려고합니다.

보기 :

initialize: function(){ 

    }, 

    render: function(){ 
     var current = this.model.toJSON(); 
     this.$el.html(_.template(cTemplate, current)); 

     var items = this.model.toJSON().items; 
     items.forEach(function(item){ 
      this.$('.list').append('<li>'+item.attributes.price+'</li>'); 
     }); 

     return this; 
    } 

템플릿 :.

<ul class="list"></ul> 

나는이에 추가하려고 $ ('목록입니다.') 내가 각 항목의 가격을 추가하고 의미 생각 현재보기의 내 템플릿 클래스에만 적용됩니다. 가격이 현재 목록보다 먼저 렌더링 된 뷰의 모든 목록 클래스에 추가되기 때문에 나는 이것을 이렇게 참조 할 수없는 것으로 보입니다.

동일한 페이지의 모든 동일한 클래스에 추가하는 것을 방지하고 현재 뷰의 템플릿에있는 템플릿을 막지 못하도록하는 것이 궁금합니다.

+0

참고 : 항목이 배열 인 경우 foreach 함수의 'this'는보기가 아니라 창이됩니다. 그래서 this. $는 글로벌 jQuery입니다! –

답변

0

ul이이보기 클래스의 tagName 인 경우 간단히 추가 할 수 있습니다.

items.forEach(function(item){ 
    this.$el.append('<li>'+item.attributes.price+'</li>'); 
}); 

또는 ul.list는 자식 요소, 당신은이

items.forEach(function(item){ 
    this.$el.find('ul.list').append('<li>'+item.attributes.price+'</li>'); 
}); 

을 수행 할 수 있습니다 때 복잡성이 증가이 패턴은 향후 유지 보수가되지 않을 수 있습니다. 해당 항목에 상호 작용이있는 경우 각 항목에 대한 개별보기를 만드는 것을 고려할 수 있습니다.

관련 문제