2015-07-20 3 views
0

Учитывая последние версии (v1.4 +) Угловой кодовой базы, можно сделать множество удивительных вещей внутри директив с помощью контроллеров. Например. фактически используя контроллер, делая контроллер, как, связывание с контроллером и т. д. и т. д.Угловая: Является ли директивная функция связи устаревшей?

В директивную директиву можно указать область, элемент и атрибуты директивы, что заставляет меня задавать вопрос: «Сделаю ли я даже нужна функция связи? "

Является ли единственным аргументом, что манипуляция DOM должна выполняться исключительно в функции связи?

Или вы могли бы утверждать, что функция связи устаревает? Будет ли Угловая 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> 

ответ

0

link функция может получить доступ к контроллеру своего родителя через require а четвертый аргумент функции link. Это очень полезно для создания интерактивных директив.

Проверить https://docs.angularjs.org/guide/directive.

+0

Ah okey, поэтому функциональность, которой я отсутствовала, была связана с связью контроллера. Я все еще не слишком увлекаюсь тем фактом, что есть функция ссылок и функция контроллера, что позволяет вам делать в основном то же самое. Но я предполагаю, что мне придется признать, что я могу получить доступ к другим контроллерам директив в функции ссылок. Но почему не следует делать то же самое в контроллере? То есть, чтобы получить ссылку на другой 'require'ed директивный контроллер? Является ли это исключительно из-за проблем с жизненным циклом, и будет ли еще потребность в функции связи в Angular 2.0? – sniii

Смежные вопросы