AngularJS指令链接函数未被调用

时间:2013-12-24 15:59:29

标签: angularjs angularjs-directive angularjs-scope

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

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

同样不那么重要的问题 - 将范围作为参数传递给另一个范围是否可以?我需要它来关闭模态窗口。

由于

2 个答案:

答案 0 :(得分:5)

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

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

此外,您可以断言if指令是否实际加载:

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

因此,您无需猜测为什么指令无效。

答案 1 :(得分:4)

这里有两件事情在发挥作用..

一个是你必须通过class属性而不是ng-class

传递指令

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

修正了 http://jsfiddle.net/gaby/jCUSh/87/

的演示