1

Я пытаюсь реализовать некоторые пользовательские функции Bootstrap Typeahed в новой директиве. Делая это, мне нужно вставить оригинальный Typeahed директиву в шахту, минуя его, мои параметры:Вставить директиву AngularJS в другую директиву

это оригинальная директива:

<div class="typeahead typeahead-lookup"> 
    <input ng-model="vm.myModel" 
      uib-typeahead="item as item.Formatted for item in vm.refreshSearch($viewValue)" 
      typeahead-wait-ms="1000" 
      typeahead-min-length="1" 
      typeahead-editable="false" 
      placeholder="SEARCH..." 
      type="text" 
      class="form-control"> 
</div> 

это мой заказ директива:

<select-lookup model="vm.myModel" 
       items="item as item.Formatted for item in vm.refreshSearch($viewValue)" 
</select-lookup> 

и вот как я пытаюсь его реализовать:

function selectLookup($compile) { 
     return { 
      restrict: 'E', 
      scope: { 
       model: "=", 
       items: "@" 
      }, 
      compile: function(element, attrs) { 
       return function(scope, element, attrs) { 
        var template = '<div class="typeahead typeahead-lookup">' + 
             '<input ng-model="model"' + 
               'uib-typeahead="{{items}}"' + 
               'typeahead-wait-ms="1000"' + 
               'typeahead-min-length="1"' + 
               'typeahead-editable="false"' + 
               'placeholder="SEARCH..."' + 
               'type="text"' + 
               'class="form-control">' + 
            '</div>'; 

        element.html(template); 

        $compile(element.contents())(scope); 
       }; 

      } 
     }; 
    } 

I 'получаю проблемы с передачей параметров из моей директивы в оригинальную директиву Typeahead, особенно с «элементами». У меня ошибка: Expected typeahead specification in form of "_modelValue_ (as _label_)? for _item_ in _collection_" but got "{{items}}".

Кто-то может помочь мне решить эту проблему?

ответ

1

Я хотел бы попробовать 'uib-typeahead=' + attrs.items + вместо 'uib-typeahead="{{items}}"'

машинописный использует пользовательский синтаксический анализатор для этого «для» в синтаксисе. https://github.com/angular-ui/bootstrap/blob/master/src/typeahead/typeahead.js#L7

+0

Спасибо Крис ... Я пробовал ваше решение, но, похоже, оно не работает. Я создал плунк здесь: http://plnkr.co/edit/IIcc3e7uE9FWDMzFPUqv?p=preview – wizzy

+1

Синтаксис for for в синтаксисе оценивается с областью действия директивы, и нет доступных состояний. Обновлено плункер: http://plnkr.co/edit/3WowFCMa7zF8JQPlw498?p=preview – ChrisY

+0

Большое спасибо! – wizzy

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