7

次のコードを使用して json オブジェクトを取得し、それを $scope にバインドしています

作業コード:

$http({
    url: '/Home/GetJson',
    method: "GET",
    params: {
        clientID: cId
    }
}).success(function (data) {
    $scope.members = data.members;
})

それは動作します..私がやりたいことは、結果を取得しvar dataてから $scope に追加することです。

失敗コード:

var data = $http({
    url: '/Home/GetJson',
    method: "GET",
    params: {
        clientID: cId
    }
}).success(function (data) {
    return data.members;
})

$scope.members = data;

$scope.members を見ると、失敗したコードでは空です。これは、$scope.members が入力されたときに空であるためです (js はイベント ベースです)。

json が > 次に var = data > 次に $scope.members = data を返すまでどのように待つことができますか?

作業コード

以下のようにJavascriptコールバック関数を使用しました

メイン関数を呼び出す

DoLogin($scope, $http, email, password, AssingMemberToScope);


function DoLogin($scope, $http, email, password, callback) {
$http({
    url: '/Home/GetJson',
    method: "GET",
    params: {
        clientID: cId
    }
}).success(function (data) {
    callback($scope, data);   //<----- Call Back occurs
})
}

//--コールバック関数が機能し、コードが分離されます --/

function AssingMemberToScope($scope, data) {
    if (data.msg) {
        $('.loading').hide();
        $scope.member = data.member;
    } else {
        $('.loading').hide();
        $('#msg').show();
    }

}
4

3 に答える 3

7

より良いアプローチは、JSON 呼び出しを、関数をパラメーターとして受け入れる関数に入れることだと思いcallbackます。簡単な例:

function makeJSONCall(callback) {
    $http({
        url: '/Home/GetJson',
        method: "GET",
        params: { clientID: cId }
    }).success(function (data) {
        callback(data);
    });
}

function someFunctionCallback(param) {
    console.log(param) 
}

次に、そのcallback関数内で、データに対して必要なことを行います。また、必要なときに JSON 関数を呼び出すこともできます。簡単makeJSONCall(someFunctionCallback)に実行できます。

于 2013-07-30T15:07:38.187 に答える