2016-08-12 3 views
4

Я использую angularjs в своем приложении, где я создал директиву для bxslider. Ниже приводится код директивы:bxslider директива throwing error `Uncaught TypeError: Не удается прочитать свойство 'indexOf' undefined`

angular.module('sbAdminApp') 
.directive('bxSlider', function(){ 
    return{ 
     restrict: "A", 
     require: "ngModel", 
     link: function(scope, element, attrs, ctrl){ 
      element.ready(function(){ 
       $($(element[0])).bxSlider({ 
        maxSlides:1, 
        auto:true, 
        controls:false, 
        pager:true 
       }); 
      }) 
     } 
    } 
}) 

Выше я использую как этот $($(element[0])).bxSlider({ после готовой функции, как я поиска проблемы, где bxslider должен работать с нг-повтором и нашел это решение, после чего bxslider работаю, но иногда изображения не загружаются, и я всегда вижу эту ошибку.

Uncaught TypeError: Cannot read property 'indexOf' of undefined

ответ

16

Наконец я получил ответ после стольких поисков

Это не angularjs ошибки это совместимость JQuery версии с bxslider.

Проблема возникает из-за функции jQuery .load().

В каталоге bxslider.js найти .load() код функции. Он использовался только один раз в bxslider.js.

От

$(this).load(); 

Для

$(this).trigger('load'); 

Благодаря kkakkurt для этого отличное решение https://stackoverflow.com/a/38562965/4119808

+0

Спасибо за это! Похоже, мне понадобится использовать совместимую с bootstrap версию этого слайдера, если я не хочу иметь дело с пользовательскими файлами bxslider. https://github.com/Rahisify/bxslider-4 – sirclesam

+0

'$ (window) .on ('load', myFunction());' дает ту же ошибку. Что мы можем сделать тогда? –

+0

u нужно показать мне экземпляр, где появляется эта ошибка –