クライアント側で実行される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
最終的には次のようになります。/ruhaha/custom-list/[object%20Object]
ちょっとした更新: アプリでいくつかのメソッドを悪用して、必要な結果を生成できることがわかりました。
App.handleURL('/ruhaha/custom-list/Exhibitors')
App.Router.router.replaceURL('/ruhaha/custom-list/Exhibitors')
これにより、実際にルートがトリガーされ、URL が置き換えられ、ページ要求なしでアプリケーションが必要な状態に効果的に移行されます。これは機能しますが、この問題を処理する方法が間違っていると確信しています。