1

で Pluralsight のファンダメンタルズを読んでいるときに、本来あるべき動作をしていないことにAngularJS困惑しています。変数が解決され$http + $q.defer()たように見えますが、変更はまだコントローラーにカスケードされていません。deferred

私の見解:

 <li class="row" ng-repeat="item in jsonData.Items">

私のサービス:

mediaApp.factory('ServiceData', function ($http,$q) {
        return{
            getJson: function ($scope) {
                var deferred = $q.defer();

                $http(
                {
                    method: 'GET',
                    url: url
                }).
                        success(function (data, status, header, config) {


                            $timeout(function () {
                                deferred.resolve(data);
                            });
                        })
        }

私のコントローラー

$scope.jsonData = ServiceData.getJson($scope);

一方、次のコード行はコントローラーで機能します。

ServiceData.getJson($scope).
       then(function (data) {
           $scope.jsonData = data;
       });

誰かがこれについて私に教えてもらえますか? 回避策はすでに適切だと思いますが、コードの特定の実装が期待どおりに機能しない理由を理解したいと思います。

何を与える?

4

1 に答える 1