2016-07-11 4 views
0

У меня есть кусок кода, который извлекает информацию из заднего конца, когда мои загрузки страницыBootstrap машинописный с два Bloodhound источника данных

//Bloodhound - Fetches all Project numbers for the current user 
     var prsysList = new Bloodhound({ 
      datumTokenizer: Bloodhound.tokenizers.whitespace, 
      queryTokenizer: Bloodhound.tokenizers.whitespace, 
      prefetch: { 
       url: "../Helper/LookUpProjectNumber/", 
       cache: false 
      } 
     }); 


     //Typeahead on project numbers 
     $('.typeahead').typeahead({ 
      hint: true, 
      highlight: true, 
      minLength: 1 
     }, 
      { 
       name: 'prsys', 
       source: prsysList 
      }); 

Теперь, когда пользователь выбирает значение, я хочу, чтобы на основе его предыдущего выбора ограничить его будущие выборы. Для этого у меня есть еще один ищейка, который возвращает мне список обновлений информации

//Bloodhound - Fetches all Project numbers for the current user 
      var newPrsysList = new Bloodhound({ 
       datumTokenizer: Bloodhound.tokenizers.whitespace, 
       queryTokenizer: Bloodhound.tokenizers.whitespace, 
       prefetch: { 
        url: '../Helper/GetCommonPrsys?prsys=' + encodeURIComponent($selectedPrsys), 
        cache: false 
       } 
      }); 


      //Init the new variable 
      newPrsysList.initialize(); 

      //Rebind all Typeaheads on project numbers 
      $('.typeahead').typeahead({ 
       hint: true, 
       higlight: true, 
       minlength: 1 
      }, 
       { 
        name: 'prsys', 
        source: newPrsysList 
       }); 

Моя проблема заключается в том, что, несмотря на то, что мой второй ищейка имеет обновленную версию данных, доступных для пользователя, чтобы выбрать, список не обновляется.

Я делаю что-то неправильно здесь?

Лучшие

ответ

0

Моя первоначальная идея состояла в том, чтобы просто создать вторую переменную Bloodhound и кормить машинописный с ним, в надежде, что источник будет автоматически обновляться (как описано в вопросе выше). Оказывается, это не тот случай, и данные моего типа не обновлялись.

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

$.ajax({ 
       url: "../Helper/FunctionName", 
       data: ({ variable1: $var1 }), 
       type: "GET", 
       success: function (data) { 

        //Destroy all typeaheads 
        $('.typeahead').typeahead('destroy'); 

        var newData= new Bloodhound({ 
         datumTokenizer: Bloodhound.tokenizers.whitespace, 
         queryTokenizer: Bloodhound.tokenizers.whitespace, 
         local: data 
        }); 


        //Init the new variable 
        newData.initialize(); 

        //Rebind all Typeaheads on project numbers 
        $('.typeahead').typeahead({ 
         hint: true, 
         higlight: true, 
         minlength: 1 
        }, 
         { 
          name: 'data', 
          source: newData 
         }); 


        return false; 
       }, 
       error: function (data) { 
        //Destroy all typeaheads 
        $('.typeahead').typeahead('destroy'); 
        return false; 
       } 
      }); 

ИМО все это должно было несколько минут, чтобы реализовать, но я предполагаю, что либо я не нашел простое решение или люди, ответственные за typeaheads не осуществлять обновление источника данных.

Удача

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