2013-02-26 48 views
1

我努力做到以下幾點:EmberJS:如何發佈,然後編輯立即

  • 「創造」一個對象(通過POST到服務器)
  • 然後立即在客戶端上進行編輯。

所以基本上這意味着UI可以保持不變 - 除非下一次單擊「提交」,表單是PUT而不是POST。 1-現在,只要我提交表格,它就會刷新新數據。

它爲什麼這樣做?

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

    }); 

2 - 我的第一個,生硬的方法做POST然後編輯是調用

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

this.store.commit(); 

權利,但它不會工作,我明白爲什麼(當我嘗試編輯它時,該對象仍然「正在保存」 - 或inFlight - )。

但是怎麼辦呢?

謝謝! PJ

回答

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(); 
    } 
    } 
}) 
+0

非常感謝邁克爾。它很棒!只有一件事:控制器上的這個「setTags()」是什麼?我無法在我的Ember版本中找到它。它是否來自你的應用程序的另一部分? – PJC 2013-02-27 11:07:09

+0

Doh!良好的捕獲,這是從我們的應用程序的另一部分。 – 2013-02-27 22:07:23