2013-03-24 6 views
0

다음과 같이 모델을 정의했습니다.배열 서브 모델의 값 변경을 청취하는 방법

var A = Backbone.Model.extends({ 
    initialize: function(){ 
     this.on('change:users.name',this.onUserNameChanged) 
    }, 
    onUserNameChanged: function(){ alert('name changed') 
}); 
var a = new A ({ 
    id:1, 
    name:'test', 
    users:[ 
    { 
     id:2, 
     name:'u1' 
    }, 
    { 
     id:3, 
     name:'u4' 
    } 
    ] 
    }) 

모델 정의에서 각 사용자 이름 변경 이벤트를 추가하고 싶습니다. 나는 이것을 할 생각이 없습니다. 그것은 나에게는 힘든 것 같습니다.

답변

0

는 여기에 설명 된대로 백본 모델 배열 구성원을 조작하여 이벤트를 변경할 얻을 수없는 것 같다

backbone-js-set-model-array-property

당신의 최선의 선택은 전체 배열을 설정하고 change:users 이벤트를 수신하거나하는 것입니다 그것은 내가 복잡한 객체에 JSON 구문 분석을 재정의합니다 것입니다

var A = Backbone.Model.extend({ 
    initialize: function (options) { 
     _.extend(this, options); 
    } 
}); 
var Users = Backbone.Collection.extend({ 
    initialize: function() { 
     this.on('change:name', function() { 
      alert('name changed'); 
     }); 
    } 
}); 

var a = new A({ 
    id: 1, 
    name: 'test', 
    users: new Users([{ 
     id: 2, 
     name: 'u1' 
    }, { 
     id: 3, 
     name: 'u4' 
    }]) 
}); 

a.users.get('2').set('name', 'u2'); 
+0

: - 더 나은 조작 할 때 이벤트를 얻을 것이다 사용자를위한 백본 컬렉션이 다른 모델을 마련. – sjbwylbs

관련 문제