我遇到了一个让我围成一圈的问题,我想知道正确的解决方案。很可能一些基本而明显的东西没有点击我的脑袋,但正如我对Ember.js所知,我很感激你的时间。
我想在ember.js中使用全局变量来存储用户ID和名称。
目前,我已经通过向应用程序控制器添加变量来完成此任务:
App.ApplicationController = Ember.Controller.extend({
//user name initially set to Tom
name:'Tom',
//using local storage - only works in modern browsers
userID: localStorage['userID']
});
问题1:在应用程序模板中,我可以使用{{name}}显示“name”变量。精细。 我还有一个“登录”模板,如何从登录模板访问“name”变量? 我尝试过使用{{App.name}},但这不起作用? 我是否必须将应用程序控制器变量传递给登录控制器,如果是,请从登录路由器执行此操作吗?
问题2:要从登录控制器设置userID,是否使用:
this.controllerFor('application').set('userID','Fred');
或者我应该使用:
Ember.set('App.userID','Fred');
或者,我应该创建一个单独的用户控制器还是用户对象来存储这些数据?
答案 0 :(得分:2)
您可以使用needs属性告诉ember您需要访问另一个控制器,然后您可以创建一个别名属性(实质上是创建对另一个属性的引用)。
App.LoginController = Ember.Controller.extend({
needs: ['application'],
userId: Ember.computed.alias('controllers.applications.userId')
});
然后,您可以从登录控制器执行this.set('userId', 'fred');