【问题标题】:Ember.js handling jQuery location changesEmber.js 处理 jQuery 位置变化
【发布时间】:2012-09-19 17:40:13
【问题描述】:

快速提问。 我发现使用 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 )。 再次感谢

【问题讨论】:

    标签: ember.js


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2012-05-24
      • 2021-12-19
      • 1970-01-01
      • 2014-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多