从事件回调中引用包含主干视图
Reference the containing backbone view from an event callback?
我使用RequireJS和Backbone,并使用listenTo
侦听collection
的add
事件。我不知道如何引用this
作为我所在视图的实例,在本例中是GroupView
。
define([
'underscore',
'backbone',
'handlebars',
...
...
], function(_,Backbone,Handlebars,...){
...
...
var GroupsView = Backbone.View.extend({
el: "#current-item",
collection: Groups,
model: Group,
groupTemplate: Handlebars.compile(GroupTemplate),
events: {
"click #add-group" : "addGroupClicked",
},
initialize: function(){
this.listenTo(Groups,'add',this.addGroup,this);
},
addGroup: function(group){
//I want a reference to this instance of GroupsView here.
//if I use this... it references
//Uncaught TypeError: Object [object global] has no method 'groupTemplate'
console.log(this.groupTemplate);
//Uncaught TypeError: Object [object global] has no method 'redrawGroups'
--> console.log(this.redrawGroups);
},
redrawGroups: function(){
},
...
...
您有:
this.listenTo(Groups,'add',this.addGroup,this);
使用Backbone的on
,您可以提供第四个参数来设置上下文,正如您所做的那样。然而,这对listenTo
不起作用;它只需要三个参数(这是因为listenTo总是将上下文设置为listented to对象)。
你应该能够通过创建一个绑定的addGroup
来绕过这个问题,比如:
this.listenTo(Groups,'add',_(this.addGroup).bind(this));
或者,您可以简单地使用将方法绑定到您的类
_(this).bindAll('addGroup');
然后让你做:
this.listenTo(Groups,'add',this.addGroup);
相关文章:
- 如何使用javascript从主svg对象动态创建svg视图框
- 如何包含特定于每个视图angularjs的javascript文件
- 当主导航离开视图时,为粘性导航应用样式
- 在Django中,可以在视图中创建一个包含js的变量,然后在循环模板标记中使用它
- 通过 JavaScript 从主网格视图上的功能区按钮更新 CRM 2011 中的字段
- Orchard - 在分部视图中包含 Javascript 文件
- 更改ng包含或定义默认ui视图
- 有没有可能在asp-mvc4中使用ajax呈现的视图中包含javascript
- 如何将文件夹中包含的控制器动态绑定到angularjs中的视图
- 从事件回调中引用包含主干视图
- 尝试在主窗口中包含子窗口
- 从包含的视图模型访问组件视图模型
- 将本地 Web 应用包含在 react 本机 Web 视图中
- 主干 - 实例化视图包含旧数据
- 在视图中包含一个包含 ERB 的 Coffeescript 文件
- Rails 4 是否允许在.JS视图中使用红宝石代码,在 rails 3 中,文件名中需要包含 .erb.js
- 在煎茶的主视图中包含多个视图
- 挖空.js访问包含视图模型中的容器模型属性
- 它包含在视图上显示的帮助文本
- CodeIgniter:包含在视图文件夹中的JS或CSS