Link函数没有在AngularJS指令中运行

时间:2015-07-09 19:57:35

标签: javascript angularjs angular-directive

我在使用角度指令时遇到了麻烦。它似乎没有运行链接功能。

我觉得这很明显,但我无法理解。

该指令是必需的,如下所示

angular.module('test').requires // ["injectedModule"]

以下代码。 Fiddle

任何帮助都会很棒。

angular
    .module('test', ['injectedModule'])
    .controller('tester', [
        function() {
            this.test = function(data) {
                alert(data);
            }
        }
    ]);

angular
    .module('injectedModule', [])
    .directive('testing', [
      function() {
        return {
          restrict: 'E',
          scope: true,
          link: function(scope, element, attrs) {
            alert(scope, element, attrs);
          }
        };
      }
    ]);
<div ng-app="test">
    <div ng-controller="tester as t">
         <video id="test" ng-src="https://scontent.cdninstagram.com/hphotos-xfa1/t50.2886-16/11726387_1613973172221601_1804343601_n.mp4" testing="t.test(el)" />        
    </div>
</div>

2 个答案:

答案 0 :(得分:3)

在我看来像是

restrict: 'E',

应该是

restrict: 'A',

你的指令根本没有被调用。

答案 1 :(得分:1)

我认为错误在于您对指令的限制。 您正在限制您的指令仅匹配元素(换句话说,标记)。您应该限制匹配属性“A”。这是有棱角的官方文档https://docs.angularjs.org/guide/directive 这是你的fiddle working

代码示例:

angular
.module('injectedModule', [])
.directive('testing', [
  function() {
    return {
      restrict: 'A',
      scope: true,
      link: function(scope, element, attrs) {
        alert(scope, element, attrs);
      }
    };
  }
]);