Angularjs 指令范围未定义
在ng repeat中将数据传递给angular指令时遇到了一个问题,它总是未定义。这是我的密码 控制员: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(); //
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;
});
}
});