【问题标题】:AngularJS directive link function not being calledAngularJS指令链接函数没有被调用
【发布时间】:2013-12-24 15:59:28
【问题描述】:

我正在尝试将 angular-http-auth 库与引导模式窗口一起使用。模态运行良好,但指令有问题。 这是一个 jsfiddle 链接 - http://jsfiddle.net/jCUSh/85/ 。我正在尝试添加一个将被调用并添加侦听器的指令。我已经简化了 jsfiddle 中的示例,因此您不会看到 http-auth 导入。但是 scope.on('') 元素仍然存在(它们不会破坏图片)。

我的问题是 - 为什么不调用链接函数?我添加了elem.addClass('test') 作为示例。 我相信解决方案超级简单,就是看不到。

还有一个不太重要的问题——可以将作用域作为参数传递给另一个作用域吗?我需要它来关闭模态窗口。

谢谢

【问题讨论】:

    标签: angularjs angularjs-directive angularjs-scope


    【解决方案1】:

    大部分指令错误都显示在控制台中,只需启用日志记录:

    app.config(function($logProvider){
        $logProvider.debugEnabled(true);
    });
    

    另外,你可以断言指令是否被实际加载:

    angular.module('my', [])
        .controller('Controller', [ '$scope', '$injector', 
            function ($scope, $injector) {
               assertDirectives($injector, [ 'dir1', 'dir2']);
             });
    
    function assertDirectives($injector, directives){
        _.each(directives, function(directiveCamelCase){
            if( !$injector.has(directiveCamelCase + 'Directive') ) 
                 throw("Directive " + directiveCamelCase + " is not available.")
        });
    }
    //you may replace underscore's `each` with jquery `each` or regular js loop
    

    因此您无需猜测指令为什么不起作用。

    【讨论】:

      【解决方案2】:

      这里有两件事在起作用..

      一个是你必须通过class属性而不是ng-class传递指令

      其次,您传递给限制属性的 "C" 字符是 ASCII 为 1057 的字符(不是我们通常的 ASCII 67 字符

      固定演示地址 http://jsfiddle.net/gaby/jCUSh/87/

      【讨论】:

      • 西里尔字母...多年后我都找不到问题,谢谢!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-31
      • 1970-01-01
      • 2015-06-21
      • 2016-11-20
      相关资源
      最近更新 更多