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
)。