Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AngularJS控制器-指令->;从指令调用控制器函数_Angularjs_Angularjs Directive - Fatal编程技术网

AngularJS控制器-指令->;从指令调用控制器函数

AngularJS控制器-指令->;从指令调用控制器函数,angularjs,angularjs-directive,Angularjs,Angularjs Directive,我有一个关于控制器和指令之间函数可见性的问题。我有一个控制器和一个指令。指令看起来是这样的 (function() { 'use strict'; angular .module('myproject.schedule') .directive('dirname', dirname); function dirname() { var directive = { restrict: 'A', replace: true, s

我有一个关于控制器和指令之间函数可见性的问题。我有一个控制器和一个指令。指令看起来是这样的

(function() {
'use strict';

angular
    .module('myproject.schedule')
    .directive('dirname', dirname);

function dirname() {
  var directive = {
        restrict: 'A',
        replace: true,
        scope: {
            currentDateScheduler: "=",
            ...
        },
        controller: DirnameController,
        controllerAs: 'vm',
        bindToController: true,
        templateUrl: ... directive.html
我的控制器如下所示:

(function() {
'use strict';

angular
    .module('myproject.schedule')
    .controller('MyController', MyController);
...
在directive.html文件中,我有一个ng点击,它调用了我的控制器的功能,这很好

其实现在我不知道为什么?我认为指令有自己的名称空间,控制器的函数在。。。directive.html


非常感谢你的帮助

控制器作用域可用于声明控制器的DOM元素中作为子元素出现的任何指令。例如

<div ng-controller="ctrl1">
    <dirname></dirnam> <!-- this has access to ctrl1 scope -->
</div>
控制器也可以嵌套。在这种情况下,作用域再次具有自上而下的效果,即在最顶层控制器中定义的函数可用于包含在子控制器中的dom元素。此外,如果此子控制器声明了相同的功能,则这些功能将覆盖父控制器的功能


希望这有助于

展示如何在ngClick中调用函数。发布一个完整的示例。非常感谢!这真的很有帮助!
angular.module('myApp',[])
.controller('myController',function($scope){
    $scope.clickMe = function(){
       alert('clicked from the controller');
    }
})
.directive('dirname', function(){
    return {
        controller: function($scope){
            $scope.clickMe = function(){ alert('clicked from directive'); };
        },
    };
});