2

次のようなルーターをセットアップしました。

Social.Router.map(function() {
    this.resource('accounts', function(){
        this.resource('account', { path: ':account_id'});
    });
});

ルートに入ったらaccount、activate メソッドを使用して DOM 操作を行います。

Social.AccountRoute = Ember.Route.extend({
    activate: function(){
        console.log('entered the account route')
    }
});

これは、アカウント ルートが初めて入力されたときにうまく機能します。問題は、アカウント ルートを離れることなく、アカウントからアカウントに変更できることです。私が行くことができることを意味します:

account/1

account/2

しかし、 activate メソッドは、最初にアカウント ルートに入ったときに 1 回だけ起動します。account_id スラッグが変更されるたびに起動するメソッドはありますか?

4

2 に答える 2

4

あまり直感的な解決策ではありませんが、モデルが変更されるたびに実行されるメソッドが 3 つあります。

  • シリアライズ
  • setupController
  • renderTemplate
于 2013-03-08T20:06:02.533 に答える
2

activate新しいルートに入るときにdeactivateのみトリガーされます。ただし、メソッドmodelsetupController、およびserializeは、 が変更されるたびに呼び出されます/account/:account_id(編集:コメントで@mavileinが指摘したようにmodel、URLの変更によってトリガーされた場合にのみ呼び出され、私はrenderTemplate.

とにかく、ルートとコントローラーは DOM 操作に関係するべきではありません。重要な値にバインドするか、コントローラーの変更を観察することにより、それをビューとテンプレートに任せます。

于 2013-03-08T20:02:45.370 に答える