2015-07-20 24 views
0

考虑到Angular代码库的最新版本(v1.4 +),可以在使用控制器的指令内部完成很多令人敬畏的东西。例如。实际上使用一个控制器,做控制器,绑定到控制器等等。Angular:关于现在的指令链接函数是否过时了?

把指令范围,元素和属性填充到指令的控制器中是可能的,这会导致我问这个问题:“我甚至需要链接功能?“

DOM操作应该在链接函数中唯一发生的唯一依据吗?

或者你能否认为链接功能已经过时了? Angular 2会否保持链接器函数的概念?

请看下面的代码,其中I在任何一个链路功能或控制器对象执行完全相同的事情:

<!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> 

回答

0

link功能是能够通过require和访问它的父的控制器函数的第四个参数link函数。这对创建交互式指令非常有用。

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

+0

啊okey,所以我失去的功能是控制器通信。我仍然不太喜欢有链接功能和控制器功能的事实,使您可以基本完成相同的操作。但我想我必须接受,我只能访问链接功能中的其他指令控制器。 但是为什么不可能在指令控制器中做同样的事情呢?也就是说,要获得另一个'require'ed指令控制器的引用? 仅仅是由于生命周期问题,并且在Angular 2.0中仍然需要链接功能吗? – sniii

相关问题