0

Dojoでコードを整理しようとしていますが、どのように機能するのかわかりません。REST呼び出しの後にjsonデータをキャッチしたいのですが、機能していません。私がRESTリターンを割り当てているtestJsonプロパティは、常にNULLです。

これどうやってするの?現在のコードを以下にコピーしました。(ClassDAOとControllerでコードを使用したい。

define([
    'dojo/_base/declare',
    'dojo/request/xhr'
], function (declare, xhr) {

    return declare(null, {


        testJson: null,

        constructor: function(){

        },

        get: function(){

            xhr('/rest/reports', {
                method: 'get',
                handleAs: 'json',
                headers: {
                    Accept: 'application/json'
                }

            }).then(function(jsonData){

                    testJson = jsonData;

                }, function(err){
                    alert(err);
                }, function(evt){
                    // Handle a progress event from the request if the
                    // browser supports XHR2
                });

        }

    });
});
4

1 に答える 1

0

クラス プロパティを変数として設定しようとしているようです。したがって、

testJson = jsonData;

あるべき姿:

this.testJson = jsonData

それ以外の場合は、プロパティではなく、実際にはグローバル変数 testJson を設定しています。また、 then()関数をクラスにスコープする必要があります。

.then(lang.hitch(this, function(jsonData){
    this.testJson = jsonData;
}))

langオブジェクトはdojo/_base/langであり、 define()に追加する必要があります

define([
    "dojo/_base/declare",
    "dojo/request/xhr",
    "dojo/_base/lang"
], function (declare, xhr, lang) {

スコーピングは Javascript の重要な概念であり、過去に私たちをつまずかせてきました。詳細については、 hitch()コマンドのドキュメントを参照してください。

于 2012-11-15T22:18:04.247 に答える