在Backbone.js的不同看法调用方法 [英] Call methods of different views in Backbone.js

查看:105
本文介绍了在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆