Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Backbonejs应用程序在导航到“用户”时自动加载页面“状态=#用户”`_Javascript_Backbone.js_Twitter Bootstrap_Coffeescript - Fatal编程技术网

Javascript Backbonejs应用程序在导航到“用户”时自动加载页面“状态=#用户”`

Javascript Backbonejs应用程序在导航到“用户”时自动加载页面“状态=#用户”`,javascript,backbone.js,twitter-bootstrap,coffeescript,Javascript,Backbone.js,Twitter Bootstrap,Coffeescript,在我的backbonejs应用程序中,当我导航到路由器时,应用程序会自动将页面重新加载到example.com/?stat=#users。导航('users') 当我点击后退按钮时,它加载urlexample.com/#users,这样它就可以正确访问所需页面,然后加载example.com/?stat=#users 我遇到了什么问题,我尝试过更改触发器选项,但无法修复它?我无法找到关于?state=#…是什么的更多信息(我可以做出假设,但简明的文档将非常有用) 精简路由文件: class wi

在我的backbonejs应用程序中,当我导航到路由器时,应用程序会自动将页面重新加载到
example.com/?stat=#users
。导航('users')

当我点击后退按钮时,它加载url
example.com/#users
,这样它就可以正确访问所需页面,然后加载
example.com/?stat=#users

我遇到了什么问题,我尝试过更改
触发器
选项,但无法修复它?我无法找到关于
?state=#…
是什么的更多信息(我可以做出假设,但简明的文档将非常有用)

精简路由文件:

class window.AppRouter extends Backbone.Router
  routes:
    "": "list"
    "users": "list"
    "user/:id": "userDetails"

  list: -> 
    @before()

  before: (callback) ->
    if @users?
      callback() if callback?
    else
      @users = new Users
      @users.fetch(
        success: ->
          $('#sidebar').html(new UsersView({model: app.users}).render().el)
          callback() if callback)

  userDetails: (id) -> 
    @before ->
      user = app.users.get( id)
      if user?
        console.log('inside if')
        app.showView( '#content', new UserView( {model: user}))

  showView: (selector, view) ->
    @currentView.close() if @currentView?
    $(selector).html(view.render().el)
    @currentView = view
    return view
我的精简视图文件:

class window.UsersView extends Backbone.View
  tagName:'ul'
  className: 'nav nav-pills nav-stacked'
  initialize: ->
    @userViews = new Array
    @model.bind("reset", @render, this)
    @model.bind("add", (user) =>
      @$el.append( new UserInListView({model: user}).render().el))

  render: (event) ->
    _.each(
      @model.models
      (user) =>
        userView = new UserInListView( {model: user})
        @userViews.push( userView)
        @$el.append( userView.render().el)
      this)
    return this


class window.UserInListView extends Backbone.View
  tagName:"li"

  initialize: ->
    @template = _.template(tpl.get('user_in_list'))
    @model.bind("change", @render, this)
    @model.bind("destroy", @close, this)

  render: (event) ->
    @$el.html( @template( @model.toJSON()))
    return this

  events:
    "click a": "select"

  select: ->
    $("#sidebar>ul>li.active").removeClass("active")
    @$el.addClass( 'active')
    app.navigate("user/#{@model.id}", true)

class window.UserView extends Backbone.View
  initialize: ->
    templateName = 'user_edit'
    @template = _.template(tpl.get(templateName))
    @model.bind("change", @render, this)

  events:
    "click .cancel": "cancel"

  cancel: ->
    @remove()
    app.navigate('users', false)

我只是不确定是什么原因造成的,这是绑定吗?是推特引导吗?这是我设置路由器的方式吗?为什么当我直接访问url时,我不会遇到问题,但当我的路由器将我导航到那里时,我会遇到问题?

问题在于在
标签上包含
名称
属性[我肯定还有其他人],通过将属性包含在标记中,该属性将包含在get请求中,因此当调用navigate时,它将访问所需页面,然后使用
name
参数执行
get
请求


在我的例子中,我在选择器中留下了一个
name='state'
(我在访问一个实际拥有
state
的用户后意识到了这一点,即他们居住的状态已设置,url是
example.com/?state=IL#users
,而这个“状态”与正在访问的主干页面的状态无关)

问题在于在
标签[我肯定还有其他标签]上包含
名称
属性,通过将属性包含在标记中,该属性将包含在get请求中,因此当调用navigate时,它将访问所需页面,然后使用
name
参数执行
get
请求


在我的例子中,我在选择器中留下了一个
name='state'
(我在访问一个实际拥有
state
的用户后意识到了这一点,即他们居住的状态已设置,url是
example.com/?state=IL#users
,而这个“状态”与正在访问的主干页面的状态无关)

路由器的
用户
路由的回调方法中的代码是什么???@Cyclone Ok,只是在代码上进行了扩展。我不确定问题是什么:(初始化路由器时是否设置了
pushState:true
?如果是,您可以不使用该方法进行尝试吗?如果
应用程序导航('users',false)
是路由器导航,那么我不认为第二个参数不是它是如何传递的,可能是你可以看一看。
路由器的
用户
路由的回调方法中的代码是什么???@Cyclone好的,只是扩展了代码。我不确定问题是什么:(您在初始化路由器时是否设置了
pushState:true
?如果是,您可以尝试不使用该选项吗?如果
app.navigate('users',false)
是路由器导航,那么我不认为第二个参数不是它的传递方式,您可以看看。