我尝试在我的项目中学习和使用 Backbone/Marionette。现在我坚持使用路由器导航,它不像我应该的那样工作。
class MyApp.Router extends Marionette.AppRouter
appRoutes :
'info/:place/(:what)' : 'places_page'
MyApp.Controller = ->
places_page: (place,what)->
console.log 'Triggered places_page'
MyApp.addInitializer( ->
controller = new MyApp.Controller()
new MyApp.Router
controller: controller
Backbone.history.start( pushState: false )
)
MyApp.vent.on('do:search', ->
console.log 'triggered do:search'
place = 'Moscow'
what = 'Пицца'
info_model.set place: place, item:what
new_url = 'info/'+where+'/'+what
if new_url != decodeURIComponent(Backbone.history.fragment)
Backbone.history.navigate(new_url, {trigger: false})
在 site.com/#info/Budapest/Vine 页面的初始加载或重新加载时,我会收到Triggered places_page
预期的消息。
但是,当我触发do:search
将 url 更新为 site.com/#info/Moscow/Пицца 的事件时,我又得到Triggered places_page
了!所以它从头开始重新加载我的所有视图,而不是仅仅更改 url 并重新渲染一个模型。
我可以在这里做错什么?
更新2: 发现奇怪的东西。如果我在新网址中使用拉丁字母,一切都会正常工作。但是如果我在新的 url 路径中使用西里尔文,它将触发路由功能。
主干:1.0,木偶:v1.0.3,jquery:1.9.1