Как бороться с неработающей ошибкой в ​​додзё? - PullRequest
0 голосов
/ 27 декабря 2010

Я получаю not a function error за мою callChart функцию в додзё.Я занимаюсь разработкой веб-сайта, который использует excanvas для рисования некоторых диаграмм в браузере.

При загрузке страницы у меня один Ajax-вызов, который выбирает некоторые значения базы данных и передает их callChart:function(), этот вызов функции callChart исключает диаграмму.Но здесь я получаю callChart is not a function.

Фрагмент кода, как показано ниже:

onload Я выполняю

 drawChart : function(){     
     this.chart(true);     
 },

chart: function(flag){
 dojo.xhrPost( {
 url : "/charting.html", 
 load : function(data){
          loadChart(data);
},
 error : function(error){
         console.error(" occured while fetch chart" );
    }
  } );

И успешнометод обратного вызова

loadChart : function(response){
        this.callChart(response);

},

и это мой callChart,

callChart:function(chartData){
----
----
},

Когда я вызываю this.callChart (ответ), я получаю сообщение об ошибке "this.callChart(response) is not a function".

Любая помощь, руководство или предложения высоко ценятся.

1 Ответ

1 голос
/ 27 декабря 2010

Ваше "this" - это механизм обратного вызова (dojo.Deferred).Используйте dojo.hitch для исправления контекста:

chart: function(flag){
 dojo.xhrPost( {
 url : "/charting.html", 
 load : dojo.hitch(this, function(data){ // changed this line
          this.loadChart(data); // added "this"
 }); // close paran
}
...