【问题标题】:AngularJS directive link function not workingAngularJS指令链接功能不起作用
【发布时间】:2012-07-23 23:43:19
【问题描述】:

http://jsfiddle.net/kz26/kH9wg/

我正在使用 AngularJS 中的指令,并尝试了简写指令样式(仅返回链接函数)和简写样式(返回全部或部分指令定义对象。

不幸的是,我只能使用popup2 中定义的简写方式使指令正常工作(激活 jQuery 弹出窗口)。普通的popup2 指令似乎根本不起作用,尤其是我的定义对象中的link 函数永远不会被调用。我需要做什么才能使这个显式链接声明起作用?

【问题讨论】:

    标签: javascript angularjs


    【解决方案1】:

    您的两个指令都进行了小幅调整,以便在创建指令时重用相同的模块,而不是覆盖第一个。见this fiddle

    而不是做:

    angular.module("app", []).directive('popover1'...
    
    angular.module("app", []).directive('popover2'...
    

    做这样的事情:

    var module = angular.module("app", []);
    
    module.directive('popover1'...
    
    module.directive('popover2'...
    

    编辑:在查看 docs 之后,我发现您可以执行与原始帖子类似的操作,如下所示:

    angular.module('app', []).directive('popover1'...
    
    angular.module('app').directive('popover2'...
    

    在第一个到angular.module 之后的后续调用中省略第二个参数[] 以配置现有模块。

    【讨论】:

    • 我也遇到了同样的问题,通过省略第二个参数重用模块确实是解决办法。
    【解决方案2】:

    为什么这里没有调用链接函数?:

    <div ng:app="app">
    <div>
        <p test="">Hello!</p>
    </div>
    

    var module = angular.module("app", []);
    
    module.directive('test', function() {
    return {
            restrict: '',
            link: function () {
                console.log('linkfn');
            },
            compile: function() {
                console.log('compile');
            }
        };
    
    });
    

    小提琴: http://jsfiddle.net/ZWLzb/

    【讨论】:

    • 您小提琴中的代码看起来与您在回复中发布的代码相同。
    猜你喜欢
    • 2015-07-26
    • 1970-01-01
    • 2016-01-23
    • 1970-01-01
    • 1970-01-01
    • 2015-09-11
    • 2014-05-08
    • 1970-01-01
    • 2016-02-26
    相关资源
    最近更新 更多