基本上,我正在尝试这样做:
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
};
});
我尝试了options.view.handleError
,但它不起作用......
我的主要目的:我想要一个特定的View来创建模型来处理错误,而不是让模型全局处理它。例如,我希望View#1在我希望View#2显示在div中时发出警报。我不知道这是否是正确的做法。如果没有,我很乐意接受你的帮助。
谢谢。
更新:这是我的jsFiddle http://jsfiddle.net/jancarlo000/87mAk/
答案 0 :(得分:6)
从Backbone 0.5.2开始,如果你需要传递上下文,建议删除bindAll以支持第三个绑定参数。
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});
这里的一般说明是,模型永远不应该知道他们的观点。只有视图应订阅模型事件。
答案 1 :(得分:3)
你向后看,视图应该绑定到模型的事件:
ViewOne = Backbone.View.extend({
initialize: function() {
_.bindAll(this, 'handleError');
this.model.bind('error', this.handleError);
},
handleError: function(model, error) { /* ... */ }
});