【发布时间】:2013-04-17 21:14:50
【问题描述】:
我对一个看似简单的 ember 问题感到困惑。我正在使用 active_model_serializers meta data serialization 从 rails 控制器序列化我的 rails current_user 方法,然后使用 this guy's temporary solution 提取该 current_user 元 json 并将其设置为全局 ember 变量。
App.CustomRESTSerializer = DS.RESTSerializer.extend({
extractMeta: function(loader, type, json) {
var meta;
meta = json[this.configOption(type, 'meta')];
if (!meta) { return; }
Ember.set('App.metaData', meta);
this._super(loader, type, json);
}
});
到目前为止一切顺利。现在我可以通过输入 App.metaData.current_user 从控制台访问 current_user 信息,也可以通过调用特定属性从车把访问 current_user 信息,即:
{{App.metaData.current_user.email}}
并且该电子邮件属性显示在模板中。当我尝试从 ember 控制器中访问该全局变量时,问题就出现了。这看起来非常简单,但我似乎无法从任何 ember 控制器中访问 current_user。我试过了:
currentUserBinding: 'App.metaData.current_user',
currentUser: function() {
return App.metaData.current_user;
}.property(),
Ember.get('App.metaData.current_user')
和其他一些方法,但似乎无法访问它。奇怪的是,我可以通过直接路径从控制台和车把中轻松访问 current_user,但不能从 ember 控制器中访问。我一定遗漏了一些明显的东西。
不胜感激!
【问题讨论】:
-
在类似的场景中,我创建了一个
User模型并将其设置为ApplicationController的属性,因此我可以通过我的路由中的controllerFor或通过needs访问我的控制器。 -
那么从你的服务器你正在序列化一个用户对象,并在你的 ApplicationController 上设置一个 currentUser 属性,该属性绑定到类似 currentUser: App.User.find(0)?
-
是的,请参见下面的示例。我还添加了一个带有模拟请求的小提琴
标签: ember.js ember-data active-model-serializers