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