Angularjs 如何从控制器调用指令函数?

Angularjs 如何从控制器调用指令函数?,angularjs,angularjs-directive,angularjs-scope,Angularjs,Angularjs Directive,Angularjs Scope,我试图创建一个简单的加载指令,我可以反复使用,但我似乎无法让它工作。我有以下代码 var-river=angular.module('river',[]); river.directive('riverload',function(){ 返回{ 限制:'E', 模板:“”+ “{{message}}{{loading}}”+ '', 范围:{ 教授:“=”, 信息:“@” }, 控制器:功能($scope){ $scope.loading=true; $scope.finished=函数(){

我试图创建一个简单的加载指令,我可以反复使用,但我似乎无法让它工作。我有以下代码

var-river=angular.module('river',[]);
river.directive('riverload',function(){
返回{
限制:'E',
模板:“”+
“{{message}}{{loading}}”+
'',
范围:{
教授:“=”,
信息:“@”
},
控制器:功能($scope){
$scope.loading=true;
$scope.finished=函数(){
$scope.loading=false;
};
}
}
});
river.controller('ClientController',函数($scope){
//这是一个$http.finished文件。
//$scope.loadingClients.finished();//这不起作用(为什么?)
});

您正在做的事情非常奇怪,因为您可以使用双向绑定。但是,我认为您的问题在于您需要将
完成的
函数设置为:

$scope.acessor.finished = function() {
    $scope.loading = false;
};
i、 e.您希望在传入的引用上绑定一个
finished
函数。但是,将模板放在指令中看起来更简单:

template: '<div class="text-center" style="padding-bottom: 20px;" ng-show="loading.show">' +
'<i class="fa fa-fw fa-refresh fa-spin" style="margin-right: 5px;"></i> {{ message }} {{ loading }}' +
'</div>',
这样,您就可以使用双向数据绑定


我还将详细了解在作用域中使用点('.'),否则将导致Javascript对象阴影问题。请参阅。

实际上,您只需从控制器控制
$scope.loadingClients
标志。我该如何操作?如果有其他方法,我真的不想使用服务,如果我不需要的话
river.controller('ClientController', function($scope) {
  $scope.loading = {show: true}
  // This is in an $http.finished.
  // $scope.loadingClients.finished(); // This does not work (why?)
  $scope.loading.show = false
});