4

スタックオーバーフロー コミュニティの皆様、こんにちは。

これは、このサイトに大いに助けられた後、サイトでの最初の質問です!

既存のデスクトップ Web アプリケーションに JQuery Mobile Framework を統合する Ruby On Rails でモバイル Web アプリケーションを構築しています。

モバイル検出 ( https://github.com/jistr/mobvious ) に Mobvious Gem を使用し、respond_to format.mobile を使用してデスクトップとモバイル ビューを区別しています。

だから、ここに私の問題 があります.2つの問題がありますが、それらは関連していると確信しています.

  1. すべてのリンクを属性 "data-ajax" => "false" に設定して、javascript が課金されたことを確認する必要がありました。
  2. コントローラーまたはレンダリングまたはリンクからの redirect_to の後、「data-rel」=>「戻る」ページの JavaScript がリロードされません。

Rails と JQuery Mobile を Javascript で使用するベスト プラクティスがあるかどうかを知りたいです。また、すべてのモバイル JS コンテンツを含む JS ファイルを app/assets/javascript に 1 つだけ配置したいのですが、うまくいきません。

助けてくれてありがとう!

EDIT : firebug を調べたとき、コンソールにライブ イベント オブジェクトを書き込むとき:

  1. 初めて :​​ コンソールにオブジェクトを 1 回表示し、javascript を正しく実行する
  2. 2回目:コンソールにオブジェクトを2回表示すると、「TypeError:循環オブジェクト値」というエラーが発生し、JavaScriptが実行されません
  3. 3 回目: コンソールにオブジェクトが 3 回表示され、javascript が正しく実行されます

これが私のモバイルのビューの構造です:

私の「レールレイアウト」:

!! %html{..html タグの内容..}

%頭

/render the head with all includes & metatag
  = render 'head'   

%体

/render here each page made by the layout _page_mobile.haml

  = yield

_page_mobile.haml ファイル:

%div{:id => "#{page_id}", :style => "padding-bottom:0px;", :data => {:role => "ページ", :theme => "b"}}

/Common header bar for all pages  
%div#headerBar{:class => "main-header", :data => {:role => "header",:theme => "b"}}
   = render 'header'   

/content of the page   
 %div.mainContainer{:style => "padding: 0px;", :data => {:role =>"content"}} 
   = page_content   

 /Common footer bar for all pages   
 %div#footerBar{:data => {:role => "footer", "tap-toggle" => "false",:theme => "b", :position => "fixed"}}
    = render 'footer'

/ページの JavaScript を挿入 = javascript_content

上記のコードでレンタルされたページの「テンプレート」:

- @pageId = "id_of_the_page"

- @pageContent = capture do
ここにページのコンテンツを入れます

- @pageJS = キャプチャ do
:javascript

Put here the javascript for the page

= render 'page', :page_id => @pageId, :page_content => @pageContent, :javascript_content => @pageJs

4

1 に答える 1

0

JqueryMobile でページにリダイレクトすると、新しいページの head と meta_tags は読み込まれず、body のみがプリロードされます。したがって、.js を本体内の .js の後に配置するとdata-role = page、ほとんどの場合、JavaScript が読み込まれます。

アップデート:

@Gajotres は、同じ主題について素晴らしい答えを出しています: jquery mobile ですべてのスクリプトを index.html に配置する必要がある理由

于 2013-08-30T17:18:01.810 に答える