为了账号安全,请及时绑定邮箱和手机立即绑定

angularjs如何在directive里调用controller的function?

angularjs如何在directive里调用controller的function?

守着星空守着你 2019-02-05 15:07:30
请问如何在directive里面调用controller的function?代码如下:    var app = angular.module('myApp',[]);     app.controller('myCtrl',function($scope){        $scope.test= function(){         ...         }     }     app.directive('myDir',    function(){        return {             restrict:'EA',             replace: true,             template: '<input ng-click="test()"></input>',             scope:{                 test: '&'             },             controller: [                '$scope', function ($scope) {                     $scope.accept = function () {                                           $scope.test();                                            };                 }                 ],         }     } );html是这样的:<button type="button" ng-click="accept()">test</button>要怎样才能实现点击test button的时候在调用了directive里的accept function之后同时调用controller里面的test function呢?
查看完整描述

3 回答

?
月关宝盒

TA贡献1772条经验 获得超5个赞

    var app = angular.module('myApp',[]);


    app.controller('myCtrl',function($scope){

       $scope.accept= function(){

        ...

        }

    }

    app.directive('myDir',

    function(){

        return {

            restrict:'EA',

            replace: true,

            template: '<input ng-click="test()"></input>',

            scope:{

                test: '&'

            },

            link: function(scope, element, attrs) {

                元素.bind("click",function(){

                    scope.accept();

                })

            }

        }

    }

);


查看完整回答
反对 回复 2019-03-17
?
蓝山帝景

TA贡献1843条经验 获得超7个赞

可以把myCtrl里的test function 存到service里,然后在directive里调用service里的test function

app.controller('myCtrl',function($scope,methods){

   $scope.test= function(){

    ...

    }

   methods.test = $scope.test;

}

app.factory('methods',function(){

        return {

            test: null

        };

})


app.directive('myDir',

    function(){

        return {

            restrict:'EA',

            replace: true,

            template: '<input ng-click="accept()"></input>',

            scope:{

                

            },

            controller: function ($scope,methods) {

                    $scope.accept = function () {

                       console.log('accept fn');

                       methods.test();

                    };

                }

        }

    }

);

或者:

var app = angular.module('myApp',[]);


app.controller('myCtrl',function($scope){

   $scope.test= function(){

    ...

    }

}

app.directive('myDir',function(){

    return {

        restrict:'EA',

        replace: true,

        template: '<input ng-click="test()"></input>',

        scope:{

            test: '&'

        },

        controller: function(){}

    }

});


HTML:

<my-dir test="test()"></my-dir>



查看完整回答
反对 回复 2019-03-17
?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

<button type="button" ng-click="accept()">test</button> 这是 html 里的调用方式?
然后这个是 directie 的 template: <input ng-click="test()"></input>

所以你的 myDir 这个 directive 到底是在哪儿调用的?另外,如果方便,请你大概描述一下你要实现什么功能。


查看完整回答
反对 回复 2019-03-17
  • 3 回答
  • 0 关注
  • 1033 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信