Как сделать обратный вызов Dajax в объект с областью видимости - PullRequest
0 голосов
/ 20 мая 2010

Кажется, я не могу найти способ заставить 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, но возвращающий eval Dajax, похоже, хочет только строку для обратного вызова.

Ответы [ 2 ]

1 голос
/ 18 августа 2010

BozoJoe, это должно работать.

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();
0 голосов
/ 24 мая 2010

Я совсем не знаком с django, но думаю, что понимаю проблему.

Похоже, что API требует, чтобы вы передавали строку, которая будет eval'd как вызов функции, поэтому вы должны передать имя функции, а не саму функцию.

Это, в свою очередь, означает, что это должно быть имя, которое имеет смысл в области окна - либо функция, определенная вне класса Ext (например, «myGlobalFunction»), либо функция-член класса Ext, которая доступна как переменная (например, "window.blah.LoadRecordsCallback")

...