2015-06-04 74 views
0

一旦承諾(通過Ajax調用)返回,我該如何更新模型屬性?這是我的工作,它不工作。在文檔中,它看起來使用Ember.set進行觀察,但我返回的模型不是Ember模型對象,所以我不認爲這是有效的。Ember路由模型觀察手柄模板中的更新

import Ember from 'ember'; 

export default Ember.Route.extend({ 

    model: function() { 

     var model = { title: "Lorem Ipsum" }; 
     var userSubscriptions = []; 
     var App = this; 

     Ember.$.getJSON('http://localhost:1337/company/usersubscription/active/', parameters, function(userSubscriptions) { 

      userSubscriptions.forEach(function(data) { 

       var userSubscription = App.store.push('usersubscription', data); 
       userSubscriptions.pushObject(userSubscription); 

       model.title = "No Lorem Ipsum"; 
       model.objects = userSubscriptions; 

      }); 

     }); 

     return model; 

    } 

}); 
+0

不使用'Ember.Object'的原因是什麼,你試圖達到什麼目的,什麼不是詳細工作? – kunerd

+0

我有點困惑,因爲如何使用Ember CLI這樣做。 – morcutt

+0

你可以像這樣使用http://emberjs.com/api/classes/Ember.Object.html#method_create:'var model = Ember.Object.create({title:「Lorem Ipsum」});'。但似乎你對這個框架有點反感。如果你能解釋你想要做的更多細節,那麼也許我或其他人可以幫助你更多。 – kunerd

回答

1

如果使用model = Ember.Object.create({title: 'old Title'}),那麼你可以使用model.set('title', 'new Title')設置一個新的標題,這將在視圖自動更新。

下面是一個簡單的例子JSBin:http://emberjs.jsbin.com/xuzevizabe/2/edit

但似乎你,而不是要使用燼數據處理您的模型。

+0

感謝您給Ember帶來一些清晰:) – morcutt

+0

您能否對我接收到的以下錯誤有所瞭解?它只發生在一些路線上。該建議可行,但我不想將模型包裝在數組中。處理路由時出錯:shipments.unshipped斷言失敗:ArrayController期望'model'實現Ember.Array混合。這通常可以通過用'Ember.A()'包裝你的模型來解決。錯誤:斷言失敗:ArrayController期望'model'實現Ember.Array混合。這通常可以通過用'Ember.A()'包裝你的模型來解決。 – morcutt

+2

不推薦使用Ember.ArrayController和Ember.ObjectController。你不應該使用它們。 –