Используя Knockout.Js, как обновить ul, когда новые данные связываются с li?

На самом деле я борюсь с нокаутом JS в течение нескольких дней. потому что я новичок в этой технологии. Я не могу обновить ul, когда новые данные связываются с li. Ниже приведен мой код.

 <ul data-role="listview" id="ListSearch" data-divider-theme="b" data-inset="true" >
         <li data-role="list-divider" role="heading">
              Criteria Selected
          </li>
          <!-- ko foreach: Contacts  -->
          <li data-theme="c">
              <a href="#page3" data-transition="slide" data-bind="attr: { title: ContactID }">
                  <span data-bind="text: FirstName + ' ' + LastName + ' (' + Classification +':'+ Position+ ')'"></span>
              </a>
          </li>
          <!-- /ko -->
      </ul>

Jquery Ajax Call:

    $.ajax({
            url: 'http://localhost:50043/api/contacts/filter',
            type: 'GET',
            dataType: 'jsonp',
            data: { ID: ClassificationPositionid },
            context: this,
            success: function (result) {
                 self.Contacts(result);
                $('#ListSearch').listview("refresh"); //throwing error.

            },
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                $(".divLoading").hide();
                alert(errorThrown);
            }
        });   

ListSearch является идентификатором UL. Если я дал, как и выше, то выкидывает ошибку ниже.

    Uncaught TypeError: Object [object Object] has no method 'listview' 

Как исправить эту ошибку? Пожалуйста, помогите мне, где я сделал ошибку

2 ответа

Решение

Поместите приведенный ниже код после ошибки в вызов jjery ajax,

     complete: function () {                 
                $('#ListSearch').listview('refresh');            
        } 

Важно: 1) Не загружать jquery после мобильного плагина js 2) Не загружать jquery при выборе тела... Пожалуйста, сначала загрузите jquery(jquery.min.js,knockout,...), а затем загрузите мобильный плагин JS

Если вы получили ошибку здесь $('#ListSearch').listview("refresh"); //throwing error., то просто так бывает:

  • Плагин jQuery Mobile ListView не загружен.
  • Плагин jQuery Mobile ListView загружен, но не работает.

Проверьте, какие файлы скриптов загружены на вашей веб-странице (инструменты разработчика браузера с помощью клавиши F12 и т. Д.), Чтобы увидеть, какие скрипты загружены. Может быть, этот файл jQuery отсутствует?

РЕДАКТИРОВАТЬ:

На вашей позиции я бы попробовал следующее - начать новый проект и включать только файлы сценариев jQuery и jQuery Mobile. Тогда возьми код:

<script type="text/javascript">
    $(function(){
        $('#ListSearch').listview("refresh");
    });    
</script>

и посмотрим, не сработает ли выше. Если это так, то на 100% что-то не так с мобильным скриптом jQuery. Попробуйте получить этот файл сценария откуда-то еще, например загрузить его с сайта jQuery и включить в свой проект.

В основном, уменьшите код до минимального количества и посмотрите, что работает.

Другие вопросы по тегам