2012-09-27 33 views
0

快速的問題。 我發現處理網站導航(不是路由aprt,只是一個簡單的導航欄)與ember.js有點複雜。 所以我想我只會用jQuery編寫這個aprt,將歷史記錄推入位置url,並希望Ember.js能夠檢測到這個變化並且路由器採取行動。處理jQuery位置更改的Ember.js

場景:

1)ember.js將使用一個DIV爲rootElement的和導航欄在體內聲明。

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

2)然後jQuery腳本將被綁定到導航div的鏈接(物品1),推動更改URL,但防止默認動作沒有停止propgation(我不想重裝所有的腳本)。類似於:

$(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綁定到jQuery時更容易) )。 再次感謝

回答

1

這可能不是一個滿意的答案,但是......這不是Ember之道。 Ember路由的核心概念是,一旦應用程序加載,真實的來源就是Javascript。當你瀏覽一個Ember應用程序時,路由器會從一個狀態轉換到另一個狀態,URL被更新爲副作用。你正在試圖扭轉局面。這不是不可能的 - 你一定可以得到你想要做的工作。但是,我想讓你知道它違背了設計師心目中的意圖。