2016-04-30 5 views
2

Я использую this Bootstrap plugin, чтобы превратить флажок в пару кнопок. Он работает так, как ожидается, когда флажок установлен до загрузки страницы (часть исходного HTML-страницы); Однако, мне нужно работать, когда флажок динамически созданный Угловая, как это, когда editIndex устанавливается, как в функции ниже:Вызов функции jQuery для объекта, динамически созданного с помощью Angular

ModalController.prototype.edit = function($index) 
{ 
    this.editIndex = $index; 
    $(":checkbox").checkboxpicker(); 
} 

Когда я звоню функция выше, функция, которая на самом деле создает кнопки не вызываются; он кажется отложенным. Как я могу вызвать функцию, которая фактически создает кнопки на флажке, созданном после загрузки страницы?

+0

Вы могли бы хотеть, чтобы попытаться создать новые директивы в угловом для создания кнопок и флажков. – choz

+0

* флажок динамически создан * означает, что он создается через цикл? или директивы? пожалуйста, предоставьте несколько кодов или напишите спасибо – kiro112

+0

@ kiro112: Он включен в тег скрипта, чтобы его можно было использовать, когда угловой создает модальный. Вот почему он не существует в DOM при первой загрузке страницы. – Andy

ответ

2

Я думаю, вы должны быть в порядке, используя услугу $timeout, чтобы отсрочить выполнение $(":checkbox").checkboxpicker(); до тех пор, пока угловая не закончит визуализацию шаблона.

ModalController.prototype.edit = function($index) 
{ 
    this.editIndex = $index; 
    $timeout(function(){ 
     $(":checkbox").checkboxpicker(); 
    }); 
} 

Однако создание настраиваемой директивы для checkboxpicker может быть лучшим решением. Что-то вроде

myApp.directive('checkboxPicker', function(){ 
    return { 
     restrict: 'A', 
     link: function(scope, el){ 
      $(el).checkboxpicker(); 
     } 
    } 
}); 

, а затем использовать его в шаблоне, как <input type="checkbox" checkbox-picker>

+0

Первый подход, похоже, не работает, но второй сделал. Спасибо! – Andy

+3

Второй подход - гораздо более Угловой способ сделать это. В любое время, когда пользовательский javascript привязан к элементу DOM, создайте директиву. – photoionized

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

  • Нет связанных вопросов^_^