0

主にリモートjsonオブジェクトからのデータで駆動される角度でWebアプリを作成しています。適切なデフォルト データを含むページをロードし、json オブジェクトを要求して、この新しいデータでコントローラーを更新したいと考えています。

私が作成したサービスの一部を以下に示します。

clickApp.factory('client', ['$http', function($http){

var logoUrl = "first";

var getConfig = function() {
    logoUrl = "second";

    $http({method: 'GET', url: base_url+'app-config.json'}).
        success(function(data, status) {
            // this callback will be called asynchronously
            // when the response is available
            // console.log("data",data);

            console.log("logopre",logoUrl);
            logoUrl = "third";
            console.log("logopost",logoUrl);
        }).
    error(function(data, status) {
        console.log("error",status);
        // called asynchronously if an error occurs
        // or server returns response with an error status.
    });
};
getConfig();

return {
    logoUrl: logoUrl
}

}]);

現時点では、ap タグを logoUrl で埋めるだけのコントローラーがこれに接続されています。このコードでは、p タグはすぐに「second」に更新され、「logopre」のログ値は「second」、「logopost」のログ値は「second」ですが、コントローラーはp タグを「」に更新しませ。 3番目の「期待どおりです。

コントローラーで派手な $scope.$watch ステートメントも試しましたが、結果は変わりません。

編集$http リクエストの後に $rootScope.$apply も試しましたが、「$digest は既に進行中です」というエラーしか表示されなかったことに注意してください。

$http リクエストの後にコントローラに反映されるように、この値を適切に更新するにはどうすればよいですか?

4

1 に答える 1