0

快速提问。我发现使用 ember.js 处理站点导航(不是路由 aprt,只是一个简单的导航栏)有点复杂。所以我想我会用 jQuery 编写这个 aprt,将历史推送到位置 url,并希望 Ember.js 会检测到这个变化并且路由器会采取行动。

设想 :

1) ember.js 将为 rootElement 使用 DIV,并且导航栏在正文中声明。

<body>
  <div id="nav">
    <ul><li><a>Item1</a></li></ul>
  </div> 
  <div id="rootEmberApp"></div>
</body>

2)然后一个jQuery脚本将绑定到导航div的链接(item1)并将更改推送到URL,但在不停止传播的情况下阻止默认操作(我不想重新加载所有脚本)。就像是 :

$(document).ready(function(){
    $("#navigation a").click(function(event){
    App.router.location.setURL('/ember/listItems');
    event.preventDefault();
});

3) 我希望 Ember.js 会在这个时候触发并采取行动。

我没有成功。傻吗?知道该怎么做吗?

非常感谢。

更新1:感谢您的回答。你是对的。我对我尝试或找到的有关导航栏的解决方案并不完全满意。我将再次查看 todoMVC 示例及其对 CollectionView 的使用。从初学者的角度来看,CollectionView 似乎是描述(声明)视图的好方法,同时它不容易阅读(当视图用纯 html 编写并且 js 绑定到它时更容易 ala jQuery )。再次感谢

4

1 回答 1

1

这可能不是一个令人满意的答案,但是……这不是 Ember Way。Ember 路由的一个核心概念是,一旦应用程序加载,事实来源就在 Javascript 中。当您在 Ember 应用程序中移动时,路由器会从一个状态转换到另一个状态,并且 URL 会作为副作用进行更新。你正试图改变它的头脑。这不是不可能的——你绝对可以得到你想要做的工作。然而,我想让你知道这违背了设计师的初衷。

于 2012-09-28T02:15:35.117 回答