2015-03-17 2 views
0

Я пытаюсь добавить элемент dom на страницу после возврата из запроса ajax. Элемент дома содержит Ui-директиву выбора, и я получаю эту ошибку:Динамическое добавление углового ui-select на страницу

Error: error:orphan 
Orphan ngTransclude Directive 

Я добавляю содержание к странице так:

var childDiv = $compile('<div>_contents_</div>')($scope); 
parentDiv.append(childDiv); 

где -contents- содержит пользовательский интерфейс -выберите директивы ниже:

<p>Selected: {{address.selected.formatted_address}}</p> 
<ui-select ng-model="address.selected" 
      theme="bootstrap" 
      ng-disabled="disabled" 
      reset-search-input="false" 
      > 
     <ui-select-match placeholder="Enter an address..."> 
      {{$select.selected.formatted_address}} 
     </ui-select-match> 
     <ui-select-choices repeat="address in addresses track by $index" 
         refresh="refreshAddresses($select.search)" 
         refresh-delay="0"> 
      <div ng-bind-html="address.formatted_address | highlight: $select.search"></div> 
     </ui-select-choices> 
</ui-select> 

Любые идеи о том, как лучше это выполнить?

+0

Почему бы не использовать 'ng-if' или что-то в этом роде? – akonsu

+0

Надеюсь, я достаточно хорошо объяснил свою дилемму. Я добавляю клон div, который уже существует на странице, содержащий директивы ui-select. Я хочу скопировать содержимое html этого div и перекомпилировать их в новой области. – Csizzle

+0

Итак, шаблон div, который уже существовал на странице, и я использовал для клонирования, уже скомпилирован, а атрибут ng-transclude применяется к шаблону. Вместо этого я решил отобразить часть сервера части контента и отправить обратно то, что является экземпляром __fresh__ html. Другим вариантом, который я мог бы использовать, было бы включение шаблона div вне сферы применения приложения, что казалось противоречивым. – Csizzle

ответ

0

Я не уверен, как настроить страницу. Но вы, вероятно, можете добавить выбранные элементы в массив $ scope и ng-repeat по этому массиву. Таким образом, когда вы получаете ответ ajax, вы можете просто указать .push элемент в этот массив, а ng-repeat позаботится о его добавлении в DOM и создании детской области.

+0

Спасибо, это сделало бы трюк. К сожалению, я переношу старый код в угловатый и просто хочу на время его обернуть в директиве, и список не генерируется ng-repeat. – Csizzle

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