2013-06-28 2 views
1

현재 데이터를 가져올 때마다 단순히 함수를 실행하는 모델을 작성하려고합니다. 내가 아는 한, 올바른 방법으로 구현하고 있지만 예상대로 작동하지 않는다. 분에서백본 이벤트 맵이 작동하지 않습니다.

이 모델은 다음과 같습니다 fetch()이의 인스턴스에서 호출 될 때마다

var MyModel = Backbone.Model.extend({ 
    // fetch the data for this, on return, create modela about it 
    url: function() { 
     return 'api.example.com/users/' + this.id + '/intialisation'; 
    }, 
    events: { 
     reset: alert('this works') 
    }, 
    makeItems: function() { 
     var newItems, currentInitialiser, currentItem; 

     alert('this does not'); 
    } 
}); 

은 경고 상자는 예상대로 '이 작품'나타납니다. 나는 실행되지 않습니다

events: { 
    reset: "makeItems" 
} 

또는

events: { 
    reset: this.makeItems 
} 

함수에 이벤트 맵을 변경하는 경우에는, (당신은 '이 작동하지 않는'경고 상자가 표시되지 않습니다). 아마도 이것이이 이벤트 맵의 작동 방식에 대한 오해 때문일 수 있습니다.하지만 실제로 작동하는 이런 것들을 보았고 이것이 왜 발생하지 않는지 알 수는 없습니다. 백본 문서를 살펴 봤지만 그 내용은 설명 적이 지 않습니다. 그러나 필자가 이해하는 한, 필자가 작성한 문서는 작동해야합니다.

는 희망이

덕분에 많이 분류 너무 까다로운되지 않습니다.

답변

1

일반적으로 이벤트 해시는 백본의 documentation에서 지원되는 백본보기에서 사용됩니다. 모델의 경우 listenTo을 사용하여 수신기를 생성하려고합니다.

var MyModel = Backbone.Model.extend({ 
    // fetch the data for this, on return, create modela about it 
    url: function() { 
     return 'api.example.com/users/' + this.id + '/intialisation'; 
    }, 
    initialize: function() { 
     this.listenTo(this,'reset',this.makeItems); 
    }, 
    makeItems: function() { 
     var newItems, currentInitialiser, currentItem; 
     alert('this does not'); 
    } 
}); 

올바른 방향으로 알려야합니다.

EDIT : 또한 Backbone의 설명서에 따라 모델의 fetchreset을 트리거하지 않습니다. change을 트리거합니다. http://backbonejs.org/#Model-fetch

+0

경고 ('this works')가 어떻게 작동 했습니까? –

+0

아주 좋은 질문입니다. MyModel을 실제로 정의한 경우를 제외하고 코드를 복사하면 작동하지 않습니다. 그러나 MyModel의 인스턴스는 이벤트를 시작하지 않습니다. – damienc88

+0

나는 어리 석다 고 생각한다. 나는 경고의 끝 부분에 브래킷을 남겨 두었으므로 함수가 실제로 호출되어 결과가 맵에 전달됩니다. –

관련 문제