javascript - 使用extjs在javascript中回调函数的问题

标签 javascript extjs callback

我的回调代码(js文件)类似于

function addcontent(Title, tUrl, bURL, Id,purl){

  alert(Id)

  var runcontent = new Ext.Panel({
    id: 'tt' + Id,
    region: 'center',
    autoLoad: {
      url: tUrl, 
      callback: function(el){
        addwindow(el, Id, bURL,purl);
      }, 
      scripts: true, 
      nocache: true
    },
    width: 600,
    collapsible: false
  });
}

function addwindow(el, Id, bURL,purl) {

  //alert(el);
  alert("add buttons   " +{Id);
}

我的问题是调用函数不会添加窗口。当我在 addcontent 中提醒“Id”时,它会显示,但不会显示 addwindow,因为控件不会移动到 addwindow。 我如何跟踪/跟踪阻止控件移动到 addwindow 上的异常是什么。?

最佳答案

使用参数创建回调的正确方法是使用 createCallbackcreateDelegate 。您的函数(显然)在全局范围内执行,因此不会产生太大的实际差异,但 createDelegate 允许您的回调在与原始函数相同的范围内执行,这使其成为最佳默认选择通常。所以它会是这样的:

autoLoad: {
  url: tUrl, 
  callback: addwindow.createDelegate(this, [Id, bURL,purl]),
  scripts: true, 
  nocache: true
},

再次请注意,您的情况中的 this 将是全局 Window 对象,但这仍然是一个很好的实践,以便将来在类方法中执行相同的操作将按预期工作。

关于javascript - 使用extjs在javascript中回调函数的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4050789/

相关文章:

javascript - 在nodejs中使用一些同步代码是否可以

javascript - 某些 HTML 表单元素在 Ember 模态中不起作用

javascript - Ext.js : How to add a search bar to a panel's header?

javascript - 如何在网格标题 Extjs 6 上触发事件 mouseenter

javascript - 在视口(viewport)中有条件加载项目

Javascript - 如何确保回调函数在再次执行主函数之前已终止

flutter - 如何在Dart/Flutter中声明一个接受多个参数的函数回调?

javascript - 无法在 Safari 中设置焦点

javascript - rails 5 : AJAX variable undefined on ajax:error/ajax:success events

javascript - 获取不同 <li> 中对象的值