невозможно передать параметр в угловую директиву

0

Я хочу инициировать сторонний элемент управления (bootstrap-select) после того, как коллекция была назначена исходной переменной. Для этого я использую директиву и смотрю такую коллекцию.

angular
.module('app').directive('bootstrapDropdown', ['$timeout',
    function ($timeout) {
        return {
            restrict: 'A',
            scope: {
                collectionName: '='
            },
            require: '?ngModel',
            link: function (scope, el, attrs) {
                el.selectpicker();
                scope.$watchCollection(scope.collectionName, function (newVal) {
                    $timeout(
                        function () {
                            el.selectpicker('refresh');
                        }
                    );
                });
            }
        };
    }
]);

Если я $watchCollection имя коллекции как строку в $watchCollection она отлично работает. Но я ищу общую директиву, поэтому я передаю имя коллекции, например

   <select bootstrap-dropdown collection-name="commandGroups"  ng-model="vm.Job.CommandGroup" name="ddlCommandGroup">
                        <option value="">Select Something</option>
                        <option ng-repeat="cmdGroup in commandGroups" collection-name="commandGroups" value="{{cmdGroup.Id}}">{{cmdGroup.Name}}</option>
                    </select>

Но он не работает

Теги:
bootstrap-select
angularjs-directive

1 ответ

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

Имя коллекции является атрибутом на элементе select и не может просто наблюдаться с помощью scope.collectionName, так как это будет возвращено undefined. Вы можете получить значение из атрибута 'collection-name', используя следующую строку в вашей функции ссылок:

scope.collectionName = attrs.collectionName;

Не уверен, что он работает для вас, так как у меня нет данных, но это, вероятно, поможет вам дальше.

Ещё вопросы

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