0

構成パラメータを設定していますが、console.log()返されたundefined理由がわかりません。コンソールの http 呼び出しから返された json が表示されます!!!

app.run(function($rootScope, $location,$http){
        var update =  function (){
            $rootScope.config = {};
            $rootScope.config.app_name = "Appname";
            $rootScope.config.app_short_description = $rootScope.config.app_name+" helps you go out with your rabbit";
            $rootScope.config.app_motto = "hey ohhhhhhhhhh <i class='icon-check'></i>";
            $rootScope.config.app_url = $location.url();
            $rootScope.config.app_path = $location.path();
            $http.get('jsons/json.json').success(function(response) {
            $rootScope.config.app_genres =  response.data;

            });

            console.log($rootScope.config.app_genres);


        }  
        $rootScope.$on('$routeChangeStart', function(){ 
            update(); 
        });

    });
4

1 に答える 1

4

通常、JavaScript は非同期ですが、いくつかの例外があります。のようないくつかの古い関数alertがブロックされています。AngularJS$httpのメソッドはノンブロッキングです。

だからあなたが走るとき。

$http.get('jsons/json.json').success(function(response) {
    $rootScope.config.app_genres = response;
});

console.log($rootScope.config.app_genres);

にリクエストが送信され、リクエストが戻るまでjsons/json.jsonコールバックは呼び出されません。.success(function(response) { ...

console.logその後、コールバックがまだ呼び出されていないため、コードはステートメントに直接続き、未定義のログが記録されます。

データをログに記録するconsole.logには、ログ ステートメントを次のようにコールバック内に配置します。

$http.get('jsons/json.json').success(function(response) {
    $rootScope.config.app_genres = response;
    console.log($rootScope.config.app_genres);
});
于 2014-01-22T11:39:46.010 に答える