2014-11-02 66 views
1

儘管我已經設置了RESPAdapter來處理所有事情,但它沒有伸手向我的服務器獲取數據。我的代碼是:Ember數據不會從API獲取

var App = Ember.Application.create({ 
    LOG_TRANSITIONS: true 
}); 

App.ApplicationAdapter = DS.RESTAdapter.extend({ 
    host: '../api/' 
}); 

App.Me = DS.Model.extend({ 
    email: DS.attr('string'), 
    firstname: DS.attr('string'), 
    lastname: DS.attr('string') 
}); 

App.WelcomemessageController = Ember.Controller.extend({ 
    firstname:"I get rendered as i should", 
    model: function() { 
     return this.store.find('me'); 
    } 
}); 

是的,屬性「firstname」得到渲染出來很好。在使用Chrome Devtools進行檢查時,沒有任何請求正在進行。

+0

您確定這是您的代碼?這是在你的控制器無效的JavaScript。除此之外,模型鉤子屬於路線,而不是控制器。 – Kingpin2k 2014-11-02 18:47:40

+0

哦,對不起,是的,當然,應該有一個,名字後的財產,失去了。但是我不能在控制器上設置一個模型? Welcommessage-view會在出口外呈現,這意味着每條路線上都會顯示Welcomemessage。那麼我應該把它放在哪裏呢? – 2014-11-02 18:52:10

+0

請檢查[指南](http://emberjs.com/guides/routing/setting-up-a-controller/)。 'model:fn'屬於路線。控制器確實有一個名爲'model'的**屬性**,但它應該是一個數據容器而不是一個抓取函數。該路由負責提取數據並使該數據可用於控制器。 – MilkyWayJoe 2014-11-02 19:07:21

回答

1

在你的情況下,你只是想使用一個計算屬性,而不是模型函數。你可以稱它爲模型,但是它會有點混亂,因爲通常一個控制器裝飾一個模型,在這種情況下,它只是一個在控制器上稱爲模型的屬性(爲了裝飾模型,控制器需要ObjectControllerArrayController

App.WelcomemessageController = Ember.Controller.extend({ 
    firstname:"I get rendered as i should", 
    user: function() { 
     return this.store.find('me'); 
    }.property() 
}); 
+0

它仍然不向服務器發出任何請求,並且Ember chrome插件中的模型仍爲空。 – 2014-11-02 19:28:52

+1

計算出的屬性被延遲計算。如果你不在你的模板中調用'user',Ember不會浪費時間來計算屬性。 – Kingpin2k 2014-11-02 19:30:36

+0

謝謝,這是一個非常重要的事實! – 2014-11-02 19:32:36