4

저는 Measure View가 있으며, RepresentationsCollection과 BeatsCollection이라는 두 개의 컬렉션이있는 측정 모델이 있습니다. Measure View는 자체 표현 모델을 가진 중첩 된 하위 표현 뷰를 가지며 모든 표현 모델은 Measure View의 BeatsCollection에 대한 참조와 동일한 속성을 공유합니다.컬렉션의 추가/변경을 뷰의 모델 속성으로 수신합니다.

나는 change 이벤트를 듣고 있다면 뭔가 추가 될 때 컬렉션이 응답하지 않는다는 것을 알고 있습니다. bind를 사용해야합니다. 워드 프로세서가 최고가 아닙니다.

here is a visual

representation.View = Backbone.View.extend({ 
    initialize: function(options) { 
    // this.beatsCollection is a reference to the Parent Measure View attribute beatsCollection which is a collection 
    this.model.listenTo(this, 'change:beatsCollection', this.render); 
    this.model.on('change:beatsCollection', this.render, this); 
    this.bind.listenTo(this, 'change:beatsCollection', this.render); 
    }, 

을 여기에 모델 : 그래서 아이 경우 표현보기는 다음과 같다 내가 가지고이 뷰의 속성에 관련된 모델을 수신하려면 어떻게

representation.Model = Backbone.Model.extend({ 
    initialize: function(options) { 
    console.log(options); 
    this.idAttribute = options.idAttribute; 
    this.type = options.type; 
    this.beatsCollection = options.beatsCollection; 
} 

다른 모델의 컬렉션에 링크 된 속성?

여기에 Plnkr: http://plnkr.co/edit/z4mWqo1v0nDe13TiB9r3?p=preview
먼저 '표현 추가'를 클릭하십시오.
둘째, '비트 추가'를 클릭하면 비트 수가 업데이트되지 않습니다. 셋째, '표현 추가'를 다시 클릭하면 정확한 비트 수의 또 다른 표현이 추가됩니다. http://plnkr.co/edit/JtyxnhaGlPVijhbRPt5v?p=preview

트릭 표현 여기에 있었다 : 형제 뷰의 상관 Plnkr 업데이트

답변

3

'박자를 추가'를 클릭하면 Representation.js보기에서 는, 어떻게 우리는 표현의 조회수가 다시 렌더링 얻을. 이 추가 수신 만

initialize: function(options) { 
    if(options.model){this.model=options.model;} 
    this.listenTo(this.model.beatsCollection, 'add remove reset', this.render); 
}, 
+0

initialize: function(options) { if(options.model){this.model=options.model;} this.model.listenTo(this, 'change:beatsCollection', this.render); this.model.on('change:beatsCollection', this.render, this); this.model.on('change:beatsCollection', this.render, this); //this.model.on('destroy', this.remove, this); }, 

를 교체보기. 나는'remove'와'change'를 묶을 수 있나요? 아니면'bind' 또는'bindAll'을 사용해야합니까? 그렇다면 어떻게? –

+0

제거 및 재설정을 수신하도록 업데이트 된 코드 –

+1

또한 beatsCollection은 모델의 특성이 아니므로 변경 : beatsCollection이 트리거되지 않음을 유의하십시오. 속성을 변경하더라도 참조 변경에 의해 전달되므로 beatsCollection은 결코 트리거되지 않습니다. –