Как подключить мой контроллер в моей директиве для вставки данных и добавления начальной загрузки select в angular.js?
Я пытаюсь добавить данные в мое меню выбора, используя контроллер и используя ng-options, в то время как у меня есть класс, определенный в моей директиве, чтобы вставить плагин bootstrap-select в элемент. Проблема в том, что данные в моем контроллере не работают, они конфликтуют с моей директивой, и я даже попытался использовать метод require и controller в моей директиве.
Пожалуйста, посмотрите на мой код:
HTML
<div ng-controller="CitiesController" class="form-group pull-left form-register-width-field form-register-select">
<label for="city">City</label>
<select id="city" ng-model="selectedItem" ng-options="item as item.name for item in cities" class="selectpicker">
<option>Select City</option>
</select>
</div>
Мой контроллер:
function CitiesController($scope) {
console.log('cities controller');
$scope.cities = [
{value:'1',name:'Angeles'},
{value:'2',name:'Angono'},
{value:'3',name:'Antipolo'},
{value:'4',name:'Apalit'},
{value:'5',name:'Arayat'},
{value:'6',name:'Bacolod'},
{value:'7',name:'Bacoor'}
];
console.log($scope.cities[2]);
}
Моя директива:
angular.module('myApp.directives', [])
.directive('selectpicker', function() {
return {
restrict: 'C',
link: function(scope,el,attr,cntr) {
$(el).selectpicker();
}
}
})
Спасибо за помощь:)
2 ответа
Попробуйте добавить контроллер в вашу директиву, как ths;
angular.module('myApp.directives', [])
.directive('selectpicker', function() {
return {
restrict: 'C',
controller: function($scope){
$scope.cities = [
{value:'1',name:'Angeles'},
{value:'2',name:'Angono'},
{value:'3',name:'Antipolo'},
{value:'4',name:'Apalit'},
{value:'5',name:'Arayat'},
{value:'6',name:'Bacolod'},
{value:'7',name:'Bacoor'}
];
},
link: function(scope,el,attr,cntr) {
$(el).selectpicker();
}
}
});
Угловой ремешок обеспечивает директиву для того же самого "bsSelect" ниже URL: