Angular指令:调用compile,但不调用link

时间:2016-01-21 06:05:57

标签: angularjs angularjs-directive

我有以下指令:

angular.module('myModule', []).directive('myDir', function () {
  return {
    scope: {},
    restrict: 'E',
    link: function () {
      alert('hello!');
    }
  };
});

我在这样的模板中使用它:

<my-dir attr1="hello" attr2="world" />

当我加载页面时,我没有收到警报。但是,如果我所做的只是分配compile属性而不是link属性,我会收到警报。为什么不调用我的link函数,但它很高兴地调用compile

注意:我甚至尝试从pre函数返回post / compile链接对象,但它仍然不会调用任何内容。如果我<my-dir>自我关闭(如上所述)也没关系。

2 个答案:

答案 0 :(得分:1)

相同的代码对我有用,请查看

<html>
  <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.0-rc.0/angular.min.js"></script>
  <script type="text/javascript">
     var myApp = angular.module('myApp',[]).directive('myDir', function () {
        return {
        scope: {},
        restrict: 'E',
        link: function () {
          alert('hello!');
        }
      };
   });
  </script>
 <body ng-app="myApp">
    <my-dir attr1="hello" attr2="world" />
 </body>

答案 1 :(得分:0)

请你试试这个。

var app = angular.module('myModule', []);

        app.directive('myDir', myfunc);

        function myfunc() {
            return {
                scope: {},
                restrict: 'E',
                link: function () {
                    alert('hello!');
                }
            };
        };