代码之家  ›  专栏  ›  技术社区  ›  BozoJoe Doug L.

如何使dajax回调成为作用域对象

  •  0
  • BozoJoe Doug L.  · 技术社区  · 14 年前

    我似乎找不到一种方法使django-dajaxice在进行初始调用的同一范围对象内进行回调。

     MyViewport = Ext.extend(MyViewportUi, {
        initComponent: function() {
            MyViewport.superclass.initComponent.call(this);
        },
    
        LoadRecordsCallback: function(data){
           if(data!='DAJAXICE_EXCEPTION')
          { alert(data); }
          else
          { alert('DAJAXICE_EXCEPTION'); }  
        },
    
        LoadRecords: function(){
          Dajaxice.Console.GetUserRecords(this.LoadRecordsCallback);
        }
     });
    
     var blah = new MyViewport();
     blah.LoadRecords();
    

    我在Django,喜欢Django-Dajaxice的调用语法。我正在使用extjs 3.2并尝试传递ext.createCallback,但Dajax返回的eval似乎只需要回调字符串。

    2 回复  |  直到 14 年前
        1
  •  1
  •   Jorge Bastida    14 年前

    博佐乔,这应该管用。

    MyViewport = Ext.extend(MyViewportUi, {
        initComponent: function() {
            MyViewport.superclass.initComponent.call(this);
        },
    
        LoadRecordsCallback: function(data){
           if(data!='DAJAXICE_EXCEPTION')
          { alert(data); }
          else
          { alert('DAJAXICE_EXCEPTION'); }  
        },
    
        LoadRecords: function(){
          Dajaxice.Console.GetUserRecords('blah.LoadRecordsCallback');
        }
     });
    
     var blah = new MyViewport();
     blah.LoadRecords();
    
        2
  •  0
  •   ob1    14 年前

    我对姜戈一点也不熟悉,但我想我理解这个问题。

    似乎API要求您传递一个字符串,该字符串将作为函数调用进行eval'd,因此您必须传递函数的名称,而不是函数本身。

    这反过来意味着它必须是一个在窗口范围内有意义的名称——要么是在ext类外部定义的函数(例如“myGlobalFunction”),要么是作为变量可访问的ext类的成员函数(例如“window.blah.loadRecordscalback”)。