0

簡単な質問。ember.jsを使用したサイトナビゲーション(ルーティングaprtではなく単純なナビゲーションバー)の処理は少し複雑であることがわかりました。したがって、このaprtをjQueryでコーディングし、履歴をロケーションURLにプッシュして、Ember.jsがこの変更を検出し、ルーターがアクションを実行することを期待します。

シナリオ :

1)ember.jsはrootElementにDIVを使用し、navbarは本文で宣言されます。

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

2)次に、jQueryスクリプトがnav 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がjQueryにバインドされていると簡単です。 )。再度、感謝します

4

1 に答える 1

1

これはおそらく満足のいく答えではありませんが...これはEmberWayではありません。Emberルーティングのコアコンセプトは、アプリが読み込まれると、信頼できる情報源はJavascriptにあるということです。Emberアプリを移動すると、ルーターが状態から状態に移行し、副作用としてURLが更新されます。あなたはそれを頭に向けようとしています。それは不可能ではありません-あなたは間違いなくあなたが仕事をしようとしていることを手に入れることができます。しかし、それはデザイナーの意図に反することを知ってもらいたいと思いました。

于 2012-09-28T02:15:35.117 に答える