angular如何在自定义指令中获取$.http返回的数据?

<!DOCTYPE html>
<html lang="en" ng-app="app">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script src="http://cdn.static.runoob.com/libs/angular.js/1.4.6/angular.min.js?v=12"></script>
    <script>
        var app = angular.module('app',[]);
        app.factory('userData',['$http','$q',function($http,$q){
            return {
                query:function(){
                    var deferred = $q.defer();
                    $http.get('tpl/user.json').then(function(response){
                        deferred.resolve(response);
                    })
                    return deferred.promise;
                }
            }
        }]);
        app.controller('myCtrl',['userData','$scope',function(userData,$scope){
            var pro = userData.query();
            pro.then(function(response){
                        $scope.user = response.data;
                        $scope.name = response.data.name;
                    })
        }]);
        app.directive('myAdd',['userData',function(userData){
            return {
                restrict: 'A',
                replace: false,
                link: function(scope,ele,attrs){
                    console.log(scope.user);
                }
            }
        }])
    </script>
</head>
<body>
    <div ng-controller="myCtrl">
        <div my-add></div>
    </div>
</body>
</html>

console.log(scope.user)显示undefined

阅读 3.4k
2 个回答

魔法技巧:

<div ng-if="user" my-add></div>

1、指令中传入HTTP服务去请求数据
2、指令中监控数据的改变动态setOption

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题