Angular,让指令工作有困难

时间:2014-12-02 14:39:39

标签: javascript angularjs angularjs-directive

我似乎无法让我的指令工作,我想我可能会错误地注册它,但我似乎无法想象如何。可能是命名惯例? 这就是我所拥有的 -

我的指示 -

'use strict';

angular.module('demoApp')
.directive('packeryAngular', ['$rootScope', '$timeout',
function($rootScope, $timeout) {
return {
  restrict: 'A',
  scope: true,
  link: function(scope, element, attrs) {

};

}
]);

在我的div上,我只是这样称呼它

<div packeryAngular>

然而,当我这样称呼时,似乎没有发生任何事情。我的第一个假设是我需要在我的应用程序上注册

angular.module('demoApp', [ 'packeryAngular ']

然而,当我这样做时,我在控制台中得到错误:

Error: [$injector:modulerr] Failed to instantiate module packeryAngular due to:
Error: [$injector:nomod] Module 'packeryAngular' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.

所以,我对此很新,但我不完全确定我在这里做错了什么,我试图复制其他工作示例,似乎无法使其正常工作。非常感谢任何帮助,非常感谢您的阅读!

2 个答案:

答案 0 :(得分:3)

你不需要注入指令,你只需要在html中使用它。第二个指令字,首字母变小,继续用连字符,所以在所有下一个资本首字母将变小并且将在之前像yourCustomDirective这样的连字符成为你的自定义指令

<div packery-angular>

摆脱在模块中注入它

angular.module('demoApp', []);

答案 1 :(得分:2)

您必须在节点上添加以下属性:

<div packery-angular>

注册指令时,您的姓名必须使用较低的驼峰表格。但HTML不能很好地处理属性名称中的大写字母,因此AngularJS希望大写字母替换为破折号,后跟相应的小写字母。

因此,javascript代码中的指令名称为yourDirectiveName,但在HTML代码中,必须将其引用为your-directive-name