在控制器中,我有一个填充 $ scope.main_data 的ajax调用。我希望在一个指令中获取该数据时填充它。然而,我遇到的两个问题是:
一旦数据到达,我如何打印指令中的数据?
控制器:
app.controller('myCtrl', ['$scope','$http', function($scope, $http) {
$scope.main_data = [];
$http.get("some_url").success( function(data) {
$scope.main_data = data;
});
}]);
指令:
app.directive('myDir', function($compile, $rootScope) {
return {
restrict: 'A',
scope: {
items: '=items'
},
link: function($scope, element, attrs, ctrl) {
$scope.$watch($scope.main_data ,function(newValue,oldValue){
if (newValue){
console.log($scope.main_data);
}
});
}
};
});
HTML:
<div ng-controller="myCtrl">
<div my-dir>
<div>
</div>
html中的指令存在于控制器中,但出于某种原因,我无法通过$ scope访问控制器范围,但$ scope。$ parent。
答案 0 :(得分:1)
你差不多了。
app.directive('myDir', function($compile, $rootScope) {
return {
restrict: 'A',
scope: {
items: '=items'
},
link: function($scope, element, attrs, ctrl) {
$scope.$watch("items",function(newValue,oldValue){
if (newValue){
console.log($scope.main_data);
}
});
}
};
});
和html:
<div ng-controller="myCtrl">
<div my-dir items="main_data">
</div>
</div>
即使您可以使用您的示波器上的一系列main_data
调用并使用其他方法来“破解”并访问$parent
,只需将其传递给您的=
绑定指令,因此在更新控制器范围时将更新。事实上,在这种情况下你甚至不需要$ watch,你将始终拥有实际的数据。