Backbone.js 和 JQuery 移动路由器

发布于 2024-12-21 20:35:44 字数 1263 浏览 0 评论 0原文

我正在使用 Backbone.js 和 JQM 开发一个应用程序,但我遇到了方法未被触发的问题。
这是我的代码:

class HomeView extends Backbone.View
  constructor: ->
    super

    @el = app.activePage()

    console.log(@el)

    @template = _.template('''
      <div>

      <ul data-role="listview" data-theme="c" data-filter="true">
        <% venues.each(function(venue){ %>
          <li><a href="#home"><%= venue.getAbstract() %></a></li>
        <% }); %>
      </ul>

      </div>
    ''')

    @render()

  render: =>
    @el.find('.ui-content').html(@template({venues : Venues}))    
    app.reapplyStyles(@el)

class HomeController extends Backbone.Controller
  routes :
    "#venues-:cid" : "show"
    "#home"  : "home"

  constructor: ->
    super
    @_views = {}

  home : ->
    console.log("home")
    @_views['home'] ||= new HomeView

  show: (cid) ->
    console.log("show")
    @_views["venues-#{cid}"] ||= new ShowVenueView { model : Venues.getByCid(cid) }

将路由设置为#home,它不会被调用。
但是,如果我将其设置为 home,并像这样禁用 ajax 和 hashListening ,

    $.mobile.ajaxEnabled = false;
    $.mobile.hashListeningEnabled = false;  

则会出现 404 页面未找到。
这有什么问题吗?

I'm developing an application with Backbone.js and JQM, but I have problems with methods not being fired.
This is my code:

class HomeView extends Backbone.View
  constructor: ->
    super

    @el = app.activePage()

    console.log(@el)

    @template = _.template('''
      <div>

      <ul data-role="listview" data-theme="c" data-filter="true">
        <% venues.each(function(venue){ %>
          <li><a href="#home"><%= venue.getAbstract() %></a></li>
        <% }); %>
      </ul>

      </div>
    ''')

    @render()

  render: =>
    @el.find('.ui-content').html(@template({venues : Venues}))    
    app.reapplyStyles(@el)

class HomeController extends Backbone.Controller
  routes :
    "#venues-:cid" : "show"
    "#home"  : "home"

  constructor: ->
    super
    @_views = {}

  home : ->
    console.log("home")
    @_views['home'] ||= new HomeView

  show: (cid) ->
    console.log("show")
    @_views["venues-#{cid}"] ||= new ShowVenueView { model : Venues.getByCid(cid) }

Setting the route to #home, it is not get called.
However if I set it to just home, and disable both ajax and hashListening like this

    $.mobile.ajaxEnabled = false;
    $.mobile.hashListeningEnabled = false;  

Brings me to a 404 page not found.
What's the problem with this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

娇柔作态 2024-12-28 20:35:44

我使用了这里描述的模式:
http://coenraets.org/blog/2012/ 03/using-backbone-js-with-jquery-mobile/

非常短,非常高效,最重要的是——它有效。

I have used the pattern described here:
http://coenraets.org/blog/2012/03/using-backbone-js-with-jquery-mobile/.

Very short, very efficient, and most important - it works.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文