在Backbone.js的不同看法调用方法 [英] Call methods of different views in Backbone.js
问题描述
我使用Backbone.js的与ASP.NET MVC 4。
我要调用不同的看法的方法从视图中的一个。为了使这个简单明白,我已经创建了下面一个小例子。
在这里,在MyView2在侧OperationCompleted方法我想打电话给下面...
- 调用MyView的2 myMethodB
- 调用MyView的1 myMethodA
- 调用APPVIEW的myMethodC
我如何做到这一点?我暂时使用类似的创建视图对象并调用它们。
像这样 VAR厂景=新MyView1();
然后 view1.myMethodA();
,有必须有一个更好的办法,请帮我找到它。谢谢
VAR为MyModel = Backbone.Model.extends({
});//查看了主网
VAR MyView1 = Backbone.View.extend({
...
myMethodA:功能(){
//做一些与视图1
}
...
});
//显示在主网亚格
VAR MyView2 = Backbone.View.extend({
...
myMethodB:功能(){
//做一些与视图2
},
OperationCompleted:功能(){
//调用MyView的2 myMethodB
//调用MyView的1 myMethodA
//调用APPVIEW的myMethodC
}
...
});VAR APPVIEW = Backbone.View.extend({
...
myMethodC:功能(){
//做应用程序查看的东西
}
...
});
得到这个工作!只好用聚合模式,已粘贴的样本下面的例子我是如何使用它...
Backbone.View.prototype.eventAggregator = _.extend({},Backbone.Events);VAR模型= Backbone.Model.extend({
});VAR厂景= Backbone.View.extend({
初始化:功能(){
this.eventAggregator.bind(doSomething_event,this.doSomething);
},
DoSomething的:函数(名称){
警报(嗨+姓名+!);
}
});VAR视图2 = Backbone.View.extend({
callToDoSomething:功能(){
self.eventAggregator.trigger(doSomething_event,亚西尔);
}
});
参考
<一个href=\"http://stackoverflow.com/a/11926812/1182982\">http://stackoverflow.com/a/11926812/1182982
I am using backbone.js with ASP.NET MVC 4.
I want to call methods of different view from one of the view. To make this simpler to understand I have created a small example below.
Here in the MyView2 in side the OperationCompleted method I want to call the following...
- call myMethodB of MyView 2
- call myMethodA of MyView 1
- call myMethodC of AppView
How do I do this ? I have temporarily used something like creating objects of view and calling them.
Something like this var view1 = new MyView1();
and then view1.myMethodA();
, there has to be a better way, Please help me find it. Thanks
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
}
...
});
Got this working ! had to use the Aggregator pattern, have pasted below a sample example of how I used it...
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");
}
});
References
http://stackoverflow.com/a/11926812/1182982
这篇关于在Backbone.js的不同看法调用方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!