jquery mobile не выполняет скрипт на ответ на запрос ajax - PullRequest
1 голос
/ 10 января 2012

Я работаю над jQuery Mobile и в настоящее время наткнулся на блокпост

При рендеринге на индексную страницу «task» после успешного создания «Task» (в соответствии с приложением rails App) компромиссная страница индекса ul#listview с подсчетом пузырьков может быть kind . На нижней части страницы есть скрипт для получения счетчика, как показано в примере с пузырем (упомянуто выше), но кажется, что скрипт никогда не выполняется.

Вот код:

partials => _index.html.erb

<div data-role="page" id="task">
 <div data-role="header">
    <h1>Tasks</h1>
 </div>
<div data-role="content">
  <ul data-role="listview">
    <li>
       <a href="/mytasks"> My Task 
         <span class="ui-li-count" id="my_tasks" ></span>
       </a>
        </li>
    <li>
       <a href="/alltasks"> All Task 
         <span class="ui-li-count" id="all_tasks" ></span>
       </a>
    </li>
</div>
  <script type="text/javascript">
    $("#task").live("pageinit",function() {
       alert("Update the count");
       // The below method fetched the count 
       go_fetch_the_count("mytasks","all_tasks");
     })
  </script>
</div>

Я также пробовал:

$(document).ready(function() { // above function // }) ,
    $("#task").live("pagecreate",function(){ // above function // })
    $("#task").live("pageshow",function(){ // above function // })
    $("#task").live("pagebeforecreate",function(){ // above function // })

Но, похоже, даже предупреждение тоже не выполнено.

С уважением Вирен Неги

Ответы [ 2 ]

0 голосов
/ 30 января 2012

Есть 2 решения для вышеуказанной проблемы, которые мне удалось выяснить

SOLUTIONS

  1. Удалите страницу из домена через событие pagehide , чтобы на странице был только один дом с идентичным идентификатором домена . как то так

$ ('# car_list'). Live ('pagehide', function () {

      $(this).remove(); 

    });

(Подход имеет серьезное предостережение, если у вас включена функция возврата jquery-mobile. Это может привести к попаданию на страницу, чья задняя страница была бы удалена событием скрытия страницы , живущим пользователем ни с кем Ситуация с землей. Плюс удаление и загрузка страницы снова только потому, что количество пузырьков на странице изменилось, это очень сложный компромисс с тем, где второе решение работало для меня)

  1. Это решение определило глобальную переменную на странице, и каждый раз, когда вызывается метод get_count , она проверяет, является ли глобальная переменная определяющей , если да обновляет текущую страницу с помощью считайте только способ обновления старой страницы

    function get_count() {
       $.ajax( { 
             url:'/get_count.json',
             dataType : "json",
             success : function(result) {
               $.each(['fer','lam','fia','cor','mer'],function(index,value) {
                  console.log(window.reloaded);
                  // the below if statement will only execute for the second time 
                  if (window.reloaded && typeof(window.reloaded) != "undefined") {
                    console.log("hello");
                    $(".ui-page-active").find("#"+value).text(result[value]) 
                  }
                  $("#"+value).text(result[value]);
               })
               window.reloaded = true ;  
             }
         });
       }
    

Обновите код и со вторым решением в приложении heroku.

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

0 голосов
/ 10 января 2012

Вам не хватает закрывающего тега </ul>.Но даже без этого у меня все в порядке.У вас нет шаблона / макета с другим data-role=page, не так ли?

Этот код работает для меня (включая отсутствующий UL)

<!DOCTYPE html> 
<html> 
    <head> 

    <title>Test</title> 
    <meta name="viewport" content="width=device-width, initial-scale=1"/> 
    <link rel="stylesheet" href="http://code.jquery.com/mobile/1.0/jquery.mobile-1.0.min.css" />
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.6.4.min.js"></script>
    <script type="text/javascript" src="http://code.jquery.com/mobile/1.0/jquery.mobile-1.0.min.js"></script>
</script>
</head> 
<body>
    <div id='jQMpage' data-role="page" data-theme='e'>


 <div data-role="header">
    <h1>Tasks</h1>
 </div>
<div data-role="content">
  <ul data-role="listview">

    <li>
       <a href="/mytasks"> My Task 
         <span class="ui-li-count" id="my_tasks" ></span>
       </a>
        </li>
    <li>
       <a href="/alltasks"> All Task 
         <span class="ui-li-count" id="all_tasks" ></span>
       </a>

    </li>

</div>
  <script type="text/javascript">
      $("#jQMpage").live("pageinit", function () {
          alert("Update the count");
      })
  </script>


    </div><!-- /page -->
</body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...