调用回调函数时如何保持this状态?

init: function() {

 console.log( this ); // constructor, YES!

 this.readConfig();
},

readConfig: function() {

 console.log( this ); // constructor, YES!

 this.httpApi.request({
    module   : 'monitor',
    func     : 'getConfig',
    success  : this.readConfigCallback,
    scope    : this
 });
},

readConfigCallback: function(oResponse) {

 console.log( this ); // Window, NO!

 var oView = this.getView(); // error...

}

#1楼 票数:5 已采纳

采用 ...

success: Ext.bind(this.readConfigCallback, this)

...而是专门将对象的上下文绑定到回调函数。 否则,将在全局上下文中调用此函数,并且this函数将引用window

  ask by Shlomo translate from so

未解决问题?本站智能推荐:

2回复

根据特定条件将回调函数添加到ExtJs存储中

我正在使用ExtJS 4.1。 在UI上,我有两个按钮-btnOne和btnTwo。 我有一个商店,单击两个按钮后即可加载。 我想要的是:单击任何按钮时,我仍然要加载存储,但是单击btnOne时,我要加载存储,并且在加载存储时,我要调用回调函数。 我无法在存储负载上添加回调函数,因为仅
1回复

Extjs-在Model.save()中重试API请求

免责声明:我是extjs新手,并且仍在围绕该框架寻找方法。 我有一个与PHP后端通信的extjs前端。 我的应用程序的一部分将数据提交到后端,并收到如下响应: 我有一个特殊的失败情况,我需要通过将flag字段设置为false重试该请求。 我能想到的唯一方法是在故障处理程序中嵌套和复制
1回复

删除和添加Gridpanel再次失败,extjs4.1和4.2中的CheckboxModel

我有一个layout: border的面板layout: border ,看起来像http://jsfiddle.net/rpcbX/ 当我点击add对西部地区我按钮, removeAll从中心区域,然后再添加一些东西,在这个例子中我添加和删除的GridPanel。 但是我的gridpa
1回复

Extjs4.1-隐藏窗口并再次在MessageBox中显示失败

我定义了一个类似于http://jsfiddle.net/KABQD/的窗口 这是我的窗户 还有一个按钮。 如果单击按钮,则将创建并首次显示我的窗口。 如果再次单击按钮,则将显示窗口。 但是当我使用Messagebox时失败。 如何解决,谢谢 这是我的按钮
1回复

Extjs4.1树加载

我用json响应创建了一个extjs树,即从php函数创建的。 我要立即获取完整的数据并转换为json,然后将响应发送到extjs。 但是获取大量记录并立即获得响应将是一个漫长的过程,并且可能会发生ajax超时。 因此,我计划要做的是在树的第一个负载上列出根节点。 然后单击父节点,将通过
2回复

如何使用getById?(ExtJS4.1)

我想通过查找其id获得数字字段的原始值。 在这里,原始值为4, 数字字段的ID为satirSayisi。 我尝试了几种组合,但没有奏效。
1回复

ExtJS4.1:卸载事件

我正在使用 ext js 4.1。 我正在开发一个必须支持 IE9、最新的 Firefox、最新的 Chrome 和 Safari 的应用程序。 如果有一些数据等待提交,我需要在用户想要离开时显示一条警报消息。 我使用原始 Javascript 执行了以下操作: 我想知道 ext js 是否可以实现
1回复

与ExtJS回调的正常链接?

在渲染器中,我生成了链接,我想映射到我的控制器功能。 ActionColumn以某种方式对图像执行此操作,但我不了解其背后的机制。 我希望在那里有按钮,但是ExtJS只允许我在网格中渲染字符串。