4

嗨 stackoverflow 社区,

这是我在这个网站上得到很多帮助后的第一个问题!

我正在 Ruby On Rails 中构建一个移动 Web 应用程序,为现有的桌面 Web 应用程序集成 JQuery 移动框架。

我使用 Mobvious Gem 进行移动检测 ( https://github.com/jistr/mobvious ),并且我使用 respond_to format.mobile 来区分桌面视图和移动视图。

所以,这是我的问题: 我有 2 个问题,但我确信它们是相关的。

  1. 我必须使用属性“data-ajax”=>“false”设置我的所有链接,以确保我的 javascript 在之后收费,否则我不是这种情况
  2. 在来自控制器或渲染或链接“data-rel”=>“back”的 redirect_to 之后,页面的 javascript 不会重新加载。

我想知道是否有使用带有 Javascript 的 Rails 和 JQuery Mobile 的最佳实践。另外,我希望 app/assets/javascript 中只有 1 个 JS 文件包含我所有的移动 JS 内容,但它不起作用。

感谢您的帮助!

编辑:当我查看萤火虫时,将实时事件对象写入控制台时:

  1. 第一次:控制台显示对象 1 次并且 javascript 正确运行
  2. 第二次:控制台显示对象 2 次,我有一个错误“TypeError:循环对象值”并且 javascript 没有运行
  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 => "page", :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 = 捕获
:javascript

Put here the javascript for the page

= 渲染'页面', :page_id => @pageId, :page_content => @pageContent, :javascript_content => @pageJs

4

1 回答 1

0

When you redirect to page with JqueryMobile, it doesn't load the head and meta_tags of the new page, it only pre-loads the body. So, when you place your .js inside the body, after the data-role = page. Your javascript will, most-likely, be loaded.

UPDATE:

@Gajotres, makes a wonderful answer about the same subject: Why I have to put all the script to index.html in jquery mobile

于 2013-08-30T17:18:01.810 回答