Angularjs 指令范围未定义

Angularjs 指令范围未定义,angularjs,angularjs-scope,angularjs-ng-repeat,Angularjs,Angularjs Scope,Angularjs Ng Repeat,在ng repeat中将数据传递给angular指令时遇到了一个问题,它总是未定义。这是我的密码 控制员: angular.module('module').controller('ModuleController', ['$scope', 'MyService', function($scope, MyService) { $scope.getData = function() { $scope.data = MyService.myGetRequest(); //

在ng repeat中将数据传递给angular指令时遇到了一个问题,它总是未定义。这是我的密码

控制员:

angular.module('module').controller('ModuleController', ['$scope', 'MyService', function($scope, MyService) { 
    $scope.getData = function() {
        $scope.data = MyService.myGetRequest(); // returning array of objects
    };
});
视图:

我认为这是因为加载模板时,
$scope.data
仍然是空的。如果是,有人知道解决方案是什么吗?提前感谢。:)

编辑:顺便说一句,如果我将
而不是
放入
范围。数据
不再是未定义的,它将显示资源中的对象数组

EDIT2:此
还将导致我的指令中的
范围。数据
未定义


EDIT3:添加服务代码片段

我认为Shomz发现了问题。您应该在异步调用中使用承诺。像这样:

angular.module('module').controller('ModuleController', ['$scope', 'MyService',       
    function($scope, MyService) { 

        $scope.data = [];

        MyService.myGetRequest().$promise.then(function(data) {
            $scope.data = data;
        });
    }

});

数据结构是什么?d.对象中有什么?你能设置一个plunker或JSFIDLE吗?我已经编辑了我的问题。数据结构是否重要?还没有在JSFIDLE或plunkr中尝试过,但是如果我硬编码数据而不是从服务器加载数据,它似乎会工作,我已经看到了一些类似代码的硬编码数据示例。您确定
$scope.data
对象有一个名为
object
的成员吗?这可以解释为什么指令中有
未定义的
。请参阅我的问题帖子中的
edit2
MyService.myGetRequest()
是异步请求吗?
angular.module('module').directive('myDirective', [function() {
    return {
        restrict: 'E',
        template: '<div></div>' // let's ignore the template for now,
        scope: { data: '=' },
        link: function(scope, el, attrs) {
            console.log(scope.data); // always undefined
        }
    };
 }]);
angular.module('module').factory('MyService', ['$resource', function($resource) {
    return $resource('/data/:id', 
        { id: '@_id' }, 
        { 
            myGetRequest: { method: 'GET', isArray: true } 
        });
}]);
angular.module('module').controller('ModuleController', ['$scope', 'MyService',       
    function($scope, MyService) { 

        $scope.data = [];

        MyService.myGetRequest().$promise.then(function(data) {
            $scope.data = data;
        });
    }

});