Когда нужно объявить контроллер внутри директив

0

Я новичок в угловой, и поэтому я не знаю сценарий, например, когда нужно объявлять контроллер внутри директив.

см. один пример кода

<body ng-app="App">
    <div ng-controller="AppCtrl">
        <div data-items></div>
    </div>
</body>

angular.module('App', []).
// sample data
controller('AppCtrl', function($scope){
    $scope.items =[
        {'title': 'Item 3'},
        {'title': 'Item 2'},
        {'title': 'Item 1'}
    ]
}).
directive('items', function(){
    return {
        template: '<span ng-repeat="item in items">{{item.title}}</span>'+
        '<h1>{{currentItem}}</h1>',
        controller: function($scope, orderByFilter){  
            $scope.items = orderByFilter($scope.items, 'title',false);
            $scope.currentItem = $scope.items[0].title;
        }
    }
})

в приведенном выше коде есть одна директива, называемая элементами, и также должен заметить один контроллер. просто скажите мне, когда мы должны объявить контроллер внутри директивы?

какой тип контроллера внутри директивы решает? позвольте мне понять значимость декларации внутри контроллера. благодаря

Теги:

2 ответа

0
Лучший ответ

в приведенном выше коде есть одна директива, называемая элементами, и также должен заметить один контроллер. просто скажите мне, когда мы должны объявить контроллер внутри директивы?

Вам нужна внутренняя directive controller, если вы хотите, чтобы ваша дочерняя директива обращалась к контроллеру родительских directives. В директиве есть атрибут require для которого требуется controller директивы.

Controller для директивы определен в одном context, ее можно ввести в другую directive для межстраничной коммуникации.

В приведенном ниже примере я пытаюсь вызвать controller ngModel.

myApp.directive('myDirective', function(){
  return {
    require: 'ngModel',    
  }
});
  • 0
    не очень понятна цель наличия контроллера внутри директивы. давай с лучшим примером.
1

Может быть несколько сценариев, когда вам нужно добавить контроллер внутри директивы, но для этого нет жесткого и быстрого правила. Прежде всего, когда ваша директива имеет изолированную область, тогда вам нужно написать контроллер внутри директивы.

Также, когда у вас есть расширенная функциональность, необходимая для написания вашего шаблона, вам нужно написать контроллер внутри директивы. Вы также можете передать ссылку на контроллер в своей директиве.

используя контроллер: 'controllerName',

  • 0
    если вы видите мои сообщения, то должны заметить, что в моей директиве нет отдельной области видимости, но есть контроллер. лучше обсудите значение директивы внутри контроллера с примером кода для большей ясности.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню