1

私は次のことをしようとしています:

  • オブジェクトを「作成」する (サーバーへの POST 経由)
  • その後、すぐにクライアントで編集します。

したがって、基本的には、UI が同じままであることを意味します。ただし、次に「送信」をクリックすると、フォームは POST ではなく PUT になります。

1- 現在、フォームを送信するとすぐに、新しいデータで更新されます。

なぜこれを行うのですか?

    App.FooNewRoute = Ember.Route.extend({
      ...
      events: {
        submit: function(){ 
            this.store.commit(); // The form content changes
        }
      }

    });

2- POST を実行してから Edit を実行するための私の最初の率直なアプローチは、呼び出すことでした

    this.transitionTo('foo.edit', this.get('controller').get('model'));

直後の

    this.store.commit();

しかし、それは機能しません。編集しようとすると、その理由がわかりました (オブジェクトはまだ「保存中」または inFlight です)。

しかし、どうすればそれを行うことができますか?

ありがとう!PJ

4

1 に答える 1

2

基本的に、移行する前にトランザクションが完了するのを待つ必要があります。

App.FooNewRoute = Ember.Route.extend({
  ...

  events: {
    submit: function(){
      var foo,
        _this = this;
      foo = this.get('controller').get('model'); 

      // Register a one-time callback for the 'didCreate' event
      foo.one('didCreate', function() {
        // At this point the model's id has not been set, so wait till next run loop
        Ember.run.next(_this, function() {
          // Now foo is ready, transition to edit
          this.transitionTo("foo.edit", foo);
        });
      });
      this.store.commit();
    }
  }
})
于 2013-02-26T19:28:10.583 に答える