Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.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
Javascript Angular指令无法访问DOM树中的控制器_Javascript_Angularjs - Fatal编程技术网

Javascript Angular指令无法访问DOM树中的控制器

Javascript Angular指令无法访问DOM树中的控制器,javascript,angularjs,Javascript,Angularjs,模板 <section id="content" ng-controller="ReservationController as resvnCtrl" > <form role="form" name="resvnCtrl.form"> <div data-date-picker> </div> </form>

模板

<section id="content" ng-controller="ReservationController as resvnCtrl" >            
        <form role="form" name="resvnCtrl.form">    
            <div  data-date-picker>
            </div>    
        </form>
    </section>
var eateryDirectives=angular.module('eateryDirectives',['eateryControllers']);

     eateryDirectives
           .directive('datePicker',function(){
               var directive={
                   require:'^resvnCtrl',
                   link:function(scope,ele,attrs,cntrl){
                       console.log(cntrl);
                   }
               };
                return directive;
            });

我发现控制器找不到错误。顺便说一下,控制器和方向盘在不同的模块中。那有关系吗?如何从指令访问该控制器?

如果您需要控制器,那么您应该需要
ngController
指令。是的,你可以做到,毕竟这只是正常的指令:

require: '^ngController'
但是,不要这样做,这是完全错误的方法。如果您希望从此控制器或方法中获得一些数据,则应使用范围配置并将必要的字段传递到隔离范围:

eateryDirectives.directive('datePicker', function () {
    var directive = {
        scope: {
            data: "=",
            onSelect: "&"
        },
        link: function (scope, ele, attrs, cntrl) {
            console.log(cntrl);
        }
    };
    return directive;
});
和HTML格式:

<section id="content" ng-controller="ReservationController as resvnCtrl" >            
    <form role="form" name="resvnCtrl.form">    
        <div data-date-picker data="resvnCtrl.dates" on-select="resvnCtrl.update()"></div>    
    </form>
</section>


ReservationController位于eateryControllers模块中,如果不知道您的总体目标是什么,很难说您应该怎么做,但您的问题是您试图以无法使用的方式使用指令的
require
。我做了与链接中所解释的相同的事情否,您有
ng controller
将一个控制器应用于一些html,并有一个指令试图要求该控制器。这不是它的工作原理。指令的
require
试图找到另一个具有该控制器的指令。@m59实际上required controller指令没有问题,它毕竟只是一个指令。当然,它不能扩展,但完全有可能。看看我的答案。