我正在尝试在模板中设置一个操作,以使用在客户端执行的 json / 和 js 的组合,将用户转换到基于动态生成的导航栏的另一条路线。我已经设法配置我的应用程序,以便我可以生成正常工作的常规路径,但我想使用转换来避免额外的页面加载。
(希望)必要信息的要点是:
https://gist.github.com/rjfranco/5289201
JS:
App.Router.map ->
@route 'index', {path: "/#{short_name}"}
@route 'customList', {path: "/#{short_name}/custom-list/:list_name"}
@route 'multiLevelList', {path: "/#{short_name}/multi-level-list/:list_name/:list_level"}
App.EventController = Em.ObjectController.extend
goTo: (navbar_icon) ->
@transitionToRoute navbar_icon.route, navbar_icon.context
# Sample passed navbar_icon
navbar_icon =
img_src: '/somesource_or_another.jpg'
display_name: 'My Link Name!'
route: 'customList'
context: {list_name: 'Exhibitors'}
模板:
{{#each controller.navbarIcons}}
<li><a {{action goTo this}}><img {{bindAttr src="image_src"}} width="36" height="36" />{{display_name}}</a></li>
{{/each}}
预期的页面实际上加载良好,但应用程序转换到的 url 不正确,刷新会破坏应用程序。
我期待一个类似于以下内容的 URL:/ruhaha/custom-list/Exhibitors
我最终得到一个类似的 URL:/ruhaha/custom-list/[object%20Object]
轻微更新: 我发现我可以在应用程序上滥用几种方法来产生我想要的结果:
App.handleURL('/ruhaha/custom-list/Exhibitors')
App.Router.router.replaceURL('/ruhaha/custom-list/Exhibitors')
这实际上会触发路由,并替换 url,从而有效地将我的应用程序转换到我想要的状态,而无需页面请求。尽管这可行,但我很确定这是处理此问题的错误方法。