2012-02-19 2 views
3

에서 콜백을 바인딩 나는 다음과 같은 코드가 있습니다Backbone.js와 Underscore.js

initialize: function() { 
    _.bindAll(this); 

    var callBack = function(res) { 
     window.item = new Item(res); 
     this.render(); 
    }; 

    _.bind(callBack, this); 

    $.get('/item/parse', { 
     uri: decodeURIComponent($.urlParam('uri')), 
     title: decodeURIComponent($.urlParam('title')) 
    }, 
     callBack 
    ); 
    }, 

의도()는 $ 갔지 함수가 완료된 후 호출 할 필요가 렌더링입니다. 그러나 심지어 콜백 함수를 _.bind로 바인딩 한 후에도 "Object has no function render"라는 메시지가 콘솔에 표시됩니다. 내가 여기에 잘못 바인딩을 사용하고 있습니까? 또한 _.bindAll을 사용할 수 있습니다

callBack = _.bind(callBack, this); 

,하지만 당신은 당신이 함수를 정의 후 전화를해야 :

답변

6

_.bind 때문에, 새로운 기능을 반환합니다. 그렇지 않으면 _.bindAll에 전화 할 때 기능이 없습니다. 이 경우 this이 어떤 기능으로도 구성되지 않으므로 this.callBack = ...을 사용해야합니다.

_.bind_.bindAll을 모두 사용하는 것은 불필요합니다.

2

나는 보통 매개 변수로 콜백을 사용하는 내 모델에 'load'메소드를 작성한다. 그런 다음 뷰의 render() 메서드에서이 메서드를 호출하고 콜백 함수에서 수행해야 할 작업을 수행합니다. 물론 데이터가로드 된 후 해당 콜백이 모델에서 트리거됩니다.