2013-05-28 2 views
1

'artist'라는 하나의 백본 모델과 'artistView'라는 백본 뷰를 만들었습니다. 내 Chrome devtools 네트워크 탭에서 볼 수있는 모델을 성공적으로 가져 왔습니다.이벤트를 발생시키지 않는 fetch() 모델

그러나 fetch는 그 순간에 'change'이벤트를 발생시키지 않았습니다. 이상한 점은 모델을 만들 때이 아니라 '변화'이벤트를 트리거하지만 내가 가져 오기() 메소드에 성공 콜백을 사용할 수이 하나 ...

을 가져하지 않을 때이다 그러나 나는이 느낌 가장 적절한 방법은 아닙니다. 어떤 생각?

모델 &보기 초기화 : 다음 내 모델 가져

var artist = new Artist({id: 3}); 
var artistView = new ArtistView({model: artist}); 

: 내 백본 View 클래스에서

artist.fetch(); 

, 나는 '변화'이벤트에서 오는 듣고 모델 :

var ArtistView = Backbone.View.extend({ 

    initialize: function() { 
     this.model.on("change", this.test()); 
    }, 

    test: function() { 
     console.log(this.model.get("name")); 
    } 
}); 

편집 : "동기화"이벤트가 작동하지 않습니다. 모델을 생성 할 때 '동기화'이벤트가 발생하지만 모델이 성공적으로 가져 오지 않은 경우는 발생하지 않습니다.

+2

은 동기화 이벤트를 수신 : 여기

는 솔루션입니다. – Stephen

+0

당신이 맞을수록 더 적절할 것입니다. –

답변

0

문제는 내 이벤트 수신기에서 발생했습니다. 실제로 컨텍스트를 고려하지 않았습니다.

this.model.on("sync", this.test, this); 

그리고하지

this.model.on("sync", this.test()); 
3

"동기화"이벤트를 사용해야합니다.

var ArtistView = Backbone.View.extend({ 

    initialize: function() { 
     this.model.on("sync", this.test()); 

    }, 

    test: function() { 
     console.log(this.model.get("name")); 
    } 
}); 

변경에만 불 때 속성 변경.

Docs.

thx에서 stephen으로 수정되었습니다.

+0

테스트를 통과했지만 불행히도 작동하지 않습니다. 테스트 메서드는 모델을 만들었지 만 성공적으로 가져올 때 호출되지 않습니다. Crazy ... – JeremyW

+0

"동기화"이벤트를 수동으로 트리거 했으므로 아무 것도 나타나지 않아 내 이벤트 수신기에서 와야합니다. – JeremyW

+0

해결책은 다음과 같습니다. this.model.on ("sync", this.test, this); :) – JeremyW

관련 문제