Javascript Backbone.js:如何调用视图';s";方法“;从外面看';s范围(例如:模型内的验证处理程序)

Javascript Backbone.js:如何调用视图';s";方法“;从外面看';s范围(例如:模型内的验证处理程序),javascript,backbone.js,Javascript,Backbone.js,基本上,我正在尝试这样做: Person = Backbone.Model.extend({ validate: { ... }, initialize: function(){ this.bind('error', ?......?); <== what do I put? }, // I DON'T WANT TO CALL THIS ONE handleError: function(){ } }); ViewOne = Bac

基本上,我正在尝试这样做:

Person = Backbone.Model.extend({

   validate: { ... },

   initialize: function(){ 
      this.bind('error', ?......?); <== what do I put?
   },

   // I DON'T WANT TO CALL THIS ONE
   handleError: function(){ }

});


ViewOne = Backbone.View.extend({

   //I WANT TO CALL THIS ONE:
   handleError: function(model, error){ 
         //display inside segmented view using jQuery 
   };

});
Person=Backbone.Model.extend({
验证:{…},
初始化:函数(){

this.bind('error',?…?);如果是向后的,视图应该绑定到模型的事件:

ViewOne = Backbone.View.extend({
    initialize: function() {
        _.bindAll(this, 'handleError');
        this.model.bind('error', this.handleError);
    },

    handleError: function(model, error) { /* ... */ }

});

由于主干0.5.2,如果需要传递上下文,建议删除bindAll,转而使用bind的第三个参数

ViewOne = Backbone.View.extend({
    initialize: function() {            
        this.model.on('error', this.handleError, this);
    },
    handleError: function(model, error) { /* ... */ }
});
...
var person = new Person();
var viewone = new ViewOne({model : person});

这里的一般注意事项是,模型永远不应该知道它们的视图。只有视图应该订阅模型事件。

出于某种原因,它不起作用。介意您在我的JSFIDLE上帮助我吗?…这有点混乱,因为我还在学习backbone.js。@Jan:您需要将
this.Model.bind
移动到视图获取mo的位置del(可能是
runCode
)并用实际模型(可能是
j
)替换
this.model
)。