2013-03-27 84 views
4

我现在处理用户登录/注册时没有余烬,但我想处理用户配置文件(编辑配置文件)。拥有一个能够处理当前用户的单体模型的最佳行动是什么?我定义了一个简单的用户为:已登录用户的单身模型

App.User = DS.Model.extend({ 
    email: DS.attr('string'), 
    name: DS.attr('string'), 
}); 

我可以填充它在App.ready但我不太清楚如何与比App.User.find(id)任何其他做 - 我不知道ID。我的服务器可以从当前会话返回当前登录的用户,但在这种情况下如何使用它? 还是我以错误的方式处理这个问题?

感谢

回答

4

Discourse嵌入当前用户的信息到基本HTML页面,并预先载入到应用程序中的路线User模型:

https://github.com/discourse/discourse/blob/master/app/assets/javascripts/discourse/routes/application_route.js

User模型,然后有足够的信息来访问用户的个人资料/等:

https://github.com/discourse/discourse/blob/master/app/assets/javascripts/discourse/models/user.js

会议的具体项目(如退出)访问独立/session/网址:如果您使用的会话

https://github.com/discourse/discourse/blob/master/app/assets/javascripts/discourse.js#L169

,并要避免嵌入在你的基地HTML页面的当前用户的信息(如您正在静态提供内容等),您还可以手动访问会话特定的URL(例如/session/),该URL会根据当前会话返回当前登录的用户信息。

4

我基本上按照你所描述的去做。我使用下面的代码调用后端来获取当前登录的用户并将其设置在Ember应用程序中。

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

App.deferReadiness(); 

$.ajax({ 
    url: 'http://localhost:3000/login', 
    dataType: 'json', 
    success: function (resp) { 
     console.log(resp.user); 

     App.store.load(App.User, resp.user._id, resp.user); 
     App.store.load(App.Company, resp.company._id, resp.company); 

     var user = App.User.find(resp.user._id); 
     var company = App.Company.find(resp.company._id); 

     App.CurrentUserController.reopen({ 
      content: user 
     }); 

     App.CurrentCompanyController.reopen({ 
      content: company 
     }); 

     App.advanceReadiness(); 
    }, 
    error: function (resp) { 
     console.log('failed: ' + resp); 
     App.advanceReadiness(); 
    } 
}); 

App.initialize(); 
+1

什么是当前的方法在新的Ember中做同样的事情?因为,它是说load()没有被定义。 – 2014-03-16 12:23:55