Angular定义自己的指令

时间:2016-07-08 13:05:32

标签: javascript angularjs

我目前正在尝试在Angular中定义自己的指令,它不会超过console.log()。我尝试的是以下内容:

log.directive.js:

export default function () {
    return {
        bindToController: {
            val: '=log-dir'
        },
        controllerAs: '$ctrl',
        template: "",
        controller: function () {
            console.log("test");
        }
    };
}

然后我导入指令:

import logDirDirective from '../../directives/log.directive';

并将其添加到我的模块中:

angular.module(MODULE_NAME).directive('log-dir',logDirDirective);

然后,在我的HTML中,我尝试将其用作:

<div class="......" log-dir>
</div>

我现在的期望是在加载后在我的控制台中看到test,但我没有。哪里出错了?

PS:请注意,我对角度相对较新,对自制指令完全不熟悉,所以我的错误可能非常简单。

1 个答案:

答案 0 :(得分:1)

指令名称和绑定/范围配置必须符合规范化约定。这意味着指令的正确定义应该是:

angular.module(MODULE_NAME).directive('logDir', logDirDirective);

绑定配置相同:

bindToController: {
    val: '=logDir'
},

检查"AngularJs directive naming conventions"问题,了解原因的详细解答。

<强> UPD。

以下是@和=绑定的变体演示:http://plnkr.co/edit/mA0YnVhd7t241kdAvgRl?p=info