Я новичок в угловой, и поэтому я не знаю сценарий, например, когда нужно объявлять контроллер внутри директив.
<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;
}
}
})
в приведенном выше коде есть одна директива, называемая элементами, и также должен заметить один контроллер. просто скажите мне, когда мы должны объявить контроллер внутри директивы?
какой тип контроллера внутри директивы решает? позвольте мне понять значимость декларации внутри контроллера. благодаря
в приведенном выше коде есть одна директива, называемая элементами, и также должен заметить один контроллер. просто скажите мне, когда мы должны объявить контроллер внутри директивы?
Вам нужна внутренняя directive
controller
, если вы хотите, чтобы ваша дочерняя директива обращалась к контроллеру родительских directives
. В директиве есть атрибут require
для которого требуется controller
директивы.
Controller
для директивы определен в одном context
, ее можно ввести в другую directive
для межстраничной коммуникации.
В приведенном ниже примере я пытаюсь вызвать controller
ngModel
.
myApp.directive('myDirective', function(){
return {
require: 'ngModel',
}
});
Может быть несколько сценариев, когда вам нужно добавить контроллер внутри директивы, но для этого нет жесткого и быстрого правила. Прежде всего, когда ваша директива имеет изолированную область, тогда вам нужно написать контроллер внутри директивы.
Также, когда у вас есть расширенная функциональность, необходимая для написания вашего шаблона, вам нужно написать контроллер внутри директивы. Вы также можете передать ссылку на контроллер в своей директиве.
используя контроллер: 'controllerName',