當在我backbonejs應用程序,應用程序,當我瀏覽到router.navigate('users')
自動重新加載頁面example.com/?stat=#users
自動加載頁面`?狀態=#users`?Backbonejs應用程序導航到`#users`
當我點擊後退按鈕時,它會加載url example.com/#users
,因此它正確訪問所需的頁面,然後加載example.com/?stat=#users
。
我遇到了什麼問題,我試過更改trigger
選項,但我無法修復它?我無法找到關於?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)
我只是不知道是什麼原因造成這一點,它是一個結合?它是嘰嘰喳喳引導?這是我設置路由器的方式嗎?當我直接訪問網址時,我怎麼會遇到問題,但是當我的路由器在那裏導航時,我呢?
''路由器''用戶'路由的回調方法中的代碼是什麼? – Cyclone
@Cyclone好的,只是擴展了代碼。 – rudolph9
我不確定是什麼問題:( 您是否在初始化路由器時創建了'pushState:true'?如果是,您可以嘗試沒有? 如果'app.navigate('users',false) '是路由器導航,那麼我不認爲第二個參數不是如何傳遞的,可能你可以看看[documentation](http://backbonejs.org/#Router-navigate)。 – Cyclone