2014-08-27 3 views
2

백본에서 놀려고하는데 문제가있는 것 같습니다. 내 이벤트가 실행 중이지만 컬렉션이 업데이트되지 않습니다. 나는 아래의 이벤트 콜백을 포함했지만 전체 예제는 여기에서 볼 수있다 : 내가 잘못 http://jsfiddle.net/xp27dm7L/7/컬렉션에 모델을 추가 할 수 없습니다.

addItem: function() { 
    alert(1) 
    var id = this.collection.length; 
    this.collection.add({ 
     "id": "p"+id, 
     "name" : "ghgjhj", 
     "title" : "EsssyyyyEEE", 
     "background" : "ssssFyFFF" 
    }); 
}, 

을 뭐하는 거지?

답변

4

중복 ID가있는 항목을 추가하는 것이 문제입니다. 다음 작업을 수행 할 경우

, 그것을 작동 :

this.collection.add({ 
    "id": "p"+Math.random(), // Just an example, of course! 
    "name" : "ghgjhj", 
    "title" : "EsssyyyyEEE", 
    "background" : "ssssFyFFF" 
}); 

를 이상적으로, 당신은 모두의 id을 선언하고 백본가 처리하도록하지 않을 수 있습니다 :

this.collection.add({ 
    "name" : "ghgjhj", 
    "title" : "EsssyyyyEEE", 
    "background" : "ssssFyFFF" 
}); 

또한의 length을 사용할 수 있습니다 새 ID를 설정하려면 다음 컬렉션을 사용하십시오.

var id = this.collection.length + 1; 
this.collection.add({ 
    "id": "p" + id, 
    "name" : "ghgjhj", 
    "title" : "EsssyyyyEEE", 
    "background" : "ssssFyFFF" 
}); 
3

중복 ID가 있으므로 새 항목을 무시합니다. 이것은 (Fiddle을)를 수정해야합니다 :

var id = this.collection.length + 1; 

Here는 백본 문서에서 관련 주 :

당신이 컬렉션에 이미 컬렉션에 모델을 추가하는 경우, 그들은거야 {merge : true}를 전달하지 않으면 무시됩니다.이 경우 속성이 해당 모델에 병합됩니다. ...

+0

고마워요! 나는 병합 옵션에 대해 몰랐다. –

관련 문제