如何从骨干网中的视图#2调用View#1的方法?
view#1 = Backbone.View.extend({
plot_markers:function(){
/*some code */
}
});
view#1 = Backbone.View.extend({
initialize:function(){
view#1.plot_markers();
}
});
如何在骨干网中设置全局方法。其中许多视图可以使用相同的方法
感谢你
答案 0 :(得分:1)
视图#2必须引用View#1,但这可能很危险,因为创建循环引用很容易。处理此问题的更好方法是让中间人(例如控制器)执行方法调用。视图#1将触发控制器侦听的事件,然后在View#2上调用正确的方法,反之亦然。我们的想法是让你的观点彼此无知,因为这遵循了“关注点分离”的整个想法。
答案 1 :(得分:0)
你可以让View2扩展View1
class View1 extends Backbone.View
plot_markers: -> # dot stuff
class View2 extends View1
initialize: ->
@plot_markers()
答案 2 :(得分:0)
试试这个,
view1 = Backbone.View.extend({
plot_markers:function(){
//add your code here,..
alert('called....');
}
});
view2 = Backbone.View.extend({
initialize:function(){
var v1 = new view1();
v1.plot_markers();
}
});
var v2 = new view2();
答案 3 :(得分:0)
根据应用程序的结构以及视图如何相互关联,您可以1)触发路由器侦听的事件并执行响应中的其他操作(如Brendan Delumpa建议),或者2)创建全局事件聚合器您可以随时随地收听并在任何地方触发事件。
Derick Bailey写在how and when to use event aggregators in Backbone上。这是一个简单的例子:
App = {};
App.events = _.extend({}, Backbone.Events);
// Subscribe to your:event
App.events.on("your:event", function(){
// Carry out whatever's supposed to happen when the event
// has been triggered here.
});
// Publish your:event
App.events.trigger("your:event");