0

AngularJS の最新リリース候補:

私は javascript オブジェクトを入れています - say stuffと呼ばれるモジュールの run 関数から $rootScope に入れていますが、これはブロックするはずです。これはコードです:

'use strict';

/* App Module */

var app = angular.module('MyApp', ['ngRoute', 'API'])
    .run(function ($rootScope, API) {
        $rootScope.stuff = null;

        // call the API
        API.getStuff()
            .success(function(data){
                $rootScope.stuff = data;
            })
            .error(function(data){
                $rootScope.stuff = null;
            });

    });

ここで、コントローラーから $rootScopeのstuffプロパティにアクセスしようとすると、stuffで「未定義または null 参照」エラーが発生します。コードは次のようになります。

'use strict';

app.controller('indexController',
    function ($scope, $rootScope, otherAPI) {
        var
            stuff = $rootScope.stuff;

        // call the other API
        otherAPI.getDifferentStuff(stuff.property)
            .success(function(data){
                    $scope.differentStuff = data;
            })
            .error(function(data){
                        // do some error handling stuff here
            });
    });

run 関数の API 呼び出しが成功していることはわかっており、$rootScope 内のものに値が割り当てられています。ここで私のコードに明らかな問題が見られる人はいますか?

助けてくれてありがとう!

リッチ

4

1 に答える 1

1

非同期の API 呼び出しですAPI.getStuff(そのように見えます)。その場合、非同期呼び出しが戻る前にコントローラーが初期化されている可能性が高いため、$rootScope.stuff は null のままです。呼び出しが成功するまで待つと、データが得られます。

于 2013-09-13T22:00:11.130 に答える