我正在将backbone.js与ASP.NET MVC 4结合使用。
我想从其中一个 View 调用不同 View 的方法。为了使这一点更容易理解,我在下面创建了一个小示例。
在 MyView2 的 OperationCompleted 方法中,我想调用以下...
- 调用 MyView 2 的 myMethodB
- 调用 MyView 1 的 myMethodA
- 调用AppView的myMethodC
我该怎么做?我暂时使用了诸如创建 View 对象并调用它们之类的方法。
像这样的var view1 = new MyView1();
然后view1.myMethodA();
,必须有更好的方法,请帮我找到它。谢谢
var MyModel = Backbone.Model.extends({
});
// View for a Main Grid
var MyView1 = Backbone.View.extend({
...
myMethodA: function(){
// do something with View 1
}
...
});
// View for subgrid in Main Grid
var MyView2 = Backbone.View.extend({
...
myMethodB: function(){
// do something with View 2
},
OperationCompleted: function(){
// call myMethodB of MyView 2
// call myMethodA of MyView 1
// call myMethodC of AppView
}
...
});
var AppView = Backbone.View.extend({
...
myMethodC: function(){
// do something with App View
}
...
});
最佳答案
成功了!必须使用聚合器模式,下面粘贴了我如何使用它的示例......
Backbone.View.prototype.eventAggregator = _.extend({}, Backbone.Events);
var model = Backbone.Model.extend({
});
var view1 = Backbone.View.extend({
initialize: function () {
this.eventAggregator.bind("doSomething_event", this.doSomething);
},
doSomething: function(name){
alert("Hey " + name + " !");
}
});
var view2 = Backbone.View.extend({
callToDoSomething: function(){
self.eventAggregator.trigger("doSomething_event", "Yasser");
}
});
引用文献
关于javascript - Backbone.js中不同 View 的调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12720561/