首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从指令到控制器的调用方法

从指令到控制器的调用方法
EN

Stack Overflow用户
提问于 2014-12-02 18:45:48
回答 2查看 58关注 0票数 0

我想从指令中调用控制器中的函数。

我的指令

代码语言:javascript
运行
复制
.directive('multEcs', ['$http', function($http){
    return{
        restrict: 'A',
        replace:false,
        link: function(scope, elem, attr){
            scope.addToArray();
        }
    }
}]);

控制器中的方法

代码语言:javascript
运行
复制
$scope.addToArray = function(){
    console.log('method called');
}
EN

回答 2

Stack Overflow用户

发布于 2014-12-03 02:32:10

尝试将要调用的函数传递给指令。

代码语言:javascript
运行
复制
 .directive('multEcs', ['$http', function($http){
     return{
         restrict: 'A',
         replace:false,
         scope : {
             myFunctionToCall : '='
         },
         link: function(scope, elem, attr){
             scope.myFunctionToCall();
         }
     }
 }]);
票数 0
EN

Stack Overflow用户

发布于 2014-12-03 05:30:58

第一种方式是控制器和指令之间的单向绑定:

JS:

代码语言:javascript
运行
复制
angular.module('App',[])
.directive('multEcs', [function(){
    return{
        restrict: 'A',
        replace: false,
        scope: {
            addToArray: '&'                            
        },
        link: function($scope, elem, attr){
            $scope.addToArray();
        }
    }
}])
.controller('HomeCtrl', ['$scope', function($scope){
    $scope.addToArray = function(){
        console.log('method called');
    }
}])

HTML:

代码语言:javascript
运行
复制
<div ng-app="App">
    <div ng-controller="HomeCtrl">
        <div mult-ecs add-to-array="addToArray()">multEcs</div>
    </div>
</div>

第二种方法是使用个人控制器在目录中创建隔离的作用域。建议用于指令之间的通信:

JS:

代码语言:javascript
运行
复制
angular.module('App',[])
.directive('multEcs', [function(){
    return {
        restrict: 'A',
        replace: false,
        controller: 'HomeCtrl',
        scope: {},
        link: function($scope, element, attrs, ctrl){
            ctrl.addToArray();
        }
    }
}])
.controller('HomeCtrl', ['$scope', function($scope){
    this.addToArray = function(){
        console.log('method called');
    };
}]);

HTML:

代码语言:javascript
运行
复制
<div ng-app="App">
    <div>
         <div mult-ecs>multEcs</div>
    </div>
</div> 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27247455

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档