1

私のアプリには、ユーザーがアクティブ化できる非表示の要素を含むメイン ビューがあります。左からスライドインするモバイルの典型的なサイドバーのように。または、タップすると詳細が表示されるカート。

これらの最初は非表示の要素の情報は、そのコンテンツがメイン アプリ テンプレートにマップされているため、常に最新です。したがって、私のルートは DOM をレンダリングする必要はありません。

遷移は JS ベースです。しかし今は、一貫した戻るボタンの動作を得るために、これらの状態を URL に反映させたいと考えています。

ember フレームワークを使用してそれを達成するにはどうすればよいですか?

私が話していることをより明確にするために更新してください:

私の理解では、ember でルートをトリガーすると、主に 2 つの副作用があります。

  1. URL で新しい状態を表し、一貫したブラウザー履歴のサポートを有効にします。
  2. 一部のデータに基づいて DOM を操作するテンプレートをレンダリングする

私の場合、たとえば、ユーザーが最小化されたカートをタップすると、次のことが必要になります。

  1. URL で新しい状態を表し、一貫したブラウザー履歴のサポートを有効にします。
  2. showCart()JS 関数を実行する (DOM の変更なし、テンプレートのレンダリングなし)

ユーザーがブラウザの [戻る] ボタンをタップすると、closeCart()(URL の状態がカートが開いているという情報を運ぶという事実に基づいて) を実行する必要があります。

4

2 に答える 2

1

問題は、ウィンドウ内のこれらのスライドにどこからアクセスできるかということです。ルート マップの 1 つの場所からのみアクセスできますか? または、ユーザーがどのビューにいてもクリックできますか? また、別のビューからクリックした場合、別のルートに戻して、ウィンドウにスライドを表示するだけですか?

1 つの場所からしかクリックできない場合は、その特定のルートの setupController にコードを追加して、js を起動してウィンドウからスライドさせることができます。

 setupController: function(){
   Ember.run.scheduleOnce('afterRender', this, function(){
    //run some js to slide out the window
    });
 }

正直なところ、どこでもボタンをクリックしてスライドアウトを表示できるのであれば、私はそれを URL に入れようとはしません。あくまで私の意見ですが。

于 2013-08-08T05:34:23.943 に答える
0

activateshow route の メソッドとメソッドを使用してdeactivate、 がいつルートに出入りするかを知ることができます。

App.ShowRoute = Ember.Route.extend({
    activate: function() {
        alert('Entering in show');
        // here would be your showCart
    },
    deactivate: function() {
        alert('Exiting from show');
        // and here the closeCart
    }
});

ここでライブデモを作成しました。これが機能していることがわかります。

于 2013-08-11T18:39:25.247 に答える