不确定我是否误解了如何在此处创建指令。比方说,我有一个控制器,如:
angular.module('myApp.controllers').controller('MyController', ['$scope', 'MyService', function($scope, MyService) {
$scope.restangularService = MyService;
}
然后我有一个指令,如:
angular.module('myApp.directives').directive('myGrid', function() {
return {
restrict: 'A',
templateUrl: 'some/path/here.html',
scope: {
restangularService: '&'
},
controller: ['$scope', function($scope) {
//access $scope.restangularService to run some queries
}
};
});
然后我使用我的指令:
<div data-my-grid data-restangular-service='restangularService'></div>
我希望在我的指令中,我可以访问$scope.restangularService
并拨打电话但是它没有正确填充。我这样做完全错了吗?有什么输入?我有一种感觉,我需要以某种方式使用ngModel指令。
答案 0 :(得分:0)
&#34;&amp;&#34;指令中隔离范围值的前缀提供&#34;单向绑定&#34;这使得指令的范围内有一个getter函数。
您对该对象所做的任何更改都不会返回到该指令的父控制器(它是&#34;只读&#34;)。因此,您无法访问“restangularService”&#39;如在控制器范围内那样变量,而不调用getter函数:
angular.module('myApp.directives', []).directive('myGrid', function() {
return {
restrict: 'A',
templateUrl: 'some/path/here.html',
scope: {
restangularService: '&'
},
controller: ['$scope', function($scope) {
console.log($scope.restangularService()); // outputs service value
}]
};
})
或者,您可以使用&#34; =&#34;,这将允许您直接访问传入的范围对象:
angular.module('myApp.directives', []).directive('myGrid', function() {
return {
restrict: 'A',
templateUrl: 'some/path/here.html',
scope: {
restangularService: '='
},
controller: ['$scope', function($scope) {
console.log($scope.restangularService); //outputs service value
}]
};
})