javascript - Angular 指令无法访问 DOM 树中的 Controller

标签 javascript angularjs

模板

<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;
            });

我收到 Controller 找不到错误。顺便说一句, Controller 和指令在不同的模块中。那有关系吗?如何从指令访问该 Controller ?

最佳答案

如果你想要求 Controller ,那么你应该要求 ngController 指令。是的,你可以做到,毕竟这只是正常的指令:

require: '^ngController'

但是,不要这样做,这是完全错误的做法。如果你想要来自这个 Controller 或方法的一些数据,你应该使用范围配置并将必要的字段传递到隔离范围:

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>

关于javascript - Angular 指令无法访问 DOM 树中的 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33161547/

相关文章:

javascript - Angular isState - 如何在 ng-if 内进行比较?

javascript - 我如何在函数中发送索引值 - Angularjs

javascript - if(){do{};while();} 和 while{} 完全一样吗

javascript - iisnode 在处理请求时遇到错误。 H结果 : 0x6d HTTP status: 500 HTTP subStatus: 1013

javascript - 使用外部嵌入方式在我的简单 HTML 导航条码中嵌入 CSS 时出现问题

javascript - 当 $scope 从一个 Controller 更改为另一个 Controller 并返回时,AngularJS $apply 未在间隔内调用

javascript - 在 ng-click 上发送文本框输入

javascript - iMacros 可以单击按钮而不等待响应吗?

javascript - 正则表达式 -/\w\b\w/

javascript - NG-Repeat 使用过滤器与当前日期进行比较?