我确信有一个更简单的方法来完成我目前的任务,但这是我知道如何做到目前为止,因为我刚刚开始使用Ember的唯一途径。灰烬控制器和路线
所以我有一个REST风格的API,它告诉烬者当前登录了哪个用户(仅限他们的名字),以便它可以在页面上显示为Signed in As {{currentUser}}
。我已经能够使它发挥作用的唯一途径是通过扩展应用程序路径为这样:
App.ApplicationRoute = Ember.Route.extend({
model: function() {
var deferredData = Ember.Deferred.create();
var list = [];
$.getJSON('/user/profile/', function(data) {
list.push({
currentUser: data[0].name
})
deferredData.resolve(list);
});
return deferredData;
}
});
,然后在我的网页这样做的:
<p class="navbar-text navbar-right">
<p class="navbar-text navbar-right">Signed in as {{#link-to 'account' class="navbar-link" id="current-user"}}{{#each}}{{currentUser}}{{/each}}{{/link-to}}</p>
</p>
它的工作原理,但我觉得如果这是不是完成我的任务的适当方式。我尝试使用App.ApplicationController
与以下内容:
App.ApplicationControler = Ember.Controller.extend({
currentUser: function() {
$.getJSON('/user/profile/', function(data) {
return data[0].name
});
}.property()
});
这并没有为我工作。任何想法我应该做什么/我做错了什么?
UPDATE
一些解决这个更多的阅读之后,现在我有什么,我认为这是我来得到它的权利
App.ApplicationController = Ember.Controller.extend({
currentUser: function() {
return $.getJSON('/user/profile/').then(function(response) {
console.log(response[0].name);
return response[0].name;
});
}.property()
});
App.applicationController = App.ApplicationController.create();
会使用数据存储和最近RESTadapters
现在对我来说是更好的选择吗?
好吧,我试了一下,但它在我的页面上呈现为'[object Object]' – pattmorter
[这是Ember.RSVP模拟ajax的一个工作示例](http://emberjs.jsbin.com/zasowuho/1/编辑?HTML,JS,输出)。检查你从'data [0] .name'得到了什么。 – panta82