Angular:指令链接功能现在已经过时了吗?

时间:2015-07-20 16:23:49

标签: angularjs hyperlink controller directive obsolete

鉴于Angular代码库的最新版本(v1.4 +),可以使用控制器在指令中做很多很棒的东西。例如。实际上使用控制器,执行控制器,绑定到控制器等等。

可以将指令范围,元素和属性DI转换为指令控制器,这使我提出问题:&#34;我是否还需要链接功能?&#34; < / p>

唯一的论点仍然是DOM操作应该只在链接函数中进行吗?

或者您是否认为链接功能已经过时了? Angular 2甚至会保持链接函数的概念吗?

请查看以下代码,其中我在链接函数或控制器对象中执行完全相同的操作:

<!DOCTYPE html>
<html ng-app="app">
<head>
<script src="https://rawgit.com/angular/bower-angular/master/angular.min.js"></script>
  <meta charset="utf-8">
  <title>JS Bin</title>
</head>
<body>
  <directive-using-controller some-attr="Tralala.."></directive-using-controller>

    <directive-using-link some-attr="Tralala.."></directive-using-link>
</body>
</html>

<script>
angular.module('app', []);

angular
  .module('app')
  .directive('directiveUsingController', directiveUsingController)
  .directive('directiveUsingLink', directiveUsingLink);

function directiveUsingController() {
  return {
    restrict: 'E',
    template: '<h1>Controller directive!</h1>',
    controller: function($scope, $element, $attrs) {
      $element.on('click', function() {
        alert('Clicked controller directive! ' + $attrs.someAttr);
      });
    }
  };
}

function directiveUsingLink() {
  return {
    restrict: 'E',
    template: '<h1>Linky directive!</h1>',
    link: function(scope, element, attributes) {
      element.on('click', function() {
        alert('Clicked linky directive! ' + attributes.someAttr);
      });
    }
  };
}
</script>

1 个答案:

答案 0 :(得分:0)

link函数能够通过requirelink函数的第四个参数访问其父级的控制器。它对于创建交互式指令非常有用。

检查https://docs.angularjs.org/guide/directive