Ember.js 路线';s型钩参数
我的老板启动了一个应用程序,现在我们正在使用夹具数据。应用程序路径有一个模型挂钩:Ember.js 路线';s型钩参数,ember.js,Ember.js,我的老板启动了一个应用程序,现在我们正在使用夹具数据。应用程序路径有一个模型挂钩: model: function(){ return this.store.find('user', 1); } 这基本上会设置一个登录用户。现在,我添加了登录路径,现在我要执行以下操作: 1) 加载应用程序后,将不会有任何已登录用户,应用程序将转换为自动登录 2) 用户输入登录信息,当登录信息正确时,即应用程序路由的模型获取数据时 第二部分是我将被卡住的地方。我知道如何将用户id从登录控
model: function(){
return this.store.find('user', 1);
}
这基本上会设置一个登录用户。现在,我添加了登录路径,现在我要执行以下操作:
1) 加载应用程序后,将不会有任何已登录用户,应用程序将转换为自动登录
2) 用户输入登录信息,当登录信息正确时,即应用程序路由的模型获取数据时
第二部分是我将被卡住的地方。我知道如何将用户id从登录控制器发送到应用程序控制器,但如何告诉模型基于控制器userId属性返回用户?基本上查找('user,userID)userID来自控制器的位置?您应该查看
我目前正在一个应用程序中使用它,发现它对提供您所需的功能非常有用。使用它就像从mixin扩展每个路由一样简单:
// app/routes/application.js
import ApplicationRouteMixin from 'simple-auth/mixins/application-route-mixin';
export default Ember.Route.extend(ApplicationRouteMixin);
这将调用您的身份验证钩子(只需查看文档)或重定向到您的身份验证路由,您可以在其中定义登录逻辑
然后,您可以使用有效的会话检查来包装内容:
{{#if session.isAuthenticated}}
<a {{ action 'invalidateSession' }}>Logout</a>
{{else}}
{{#link-to 'login'}}Login{{/link-to}}
{{/if}}
此技术依赖于发送的操作,其中用户ID是一个参数,因此使用Handlebar helper{{action'login'1}}
或控制器方法时,该方法更灵活:This.send('login',1)
您的登录控制器还可以有一个属性,userId
,该属性在登录时设置
您的登录控制器,而不是接收一个userId参数,只需使用:this.controllerFor('login').get('userId')
有很多方法可以实现您想要的功能。Ember Simple Auth可能是最好的,但如果您愿意,可以自己使用
action: {
login: function(userId){
var self = this;
//on fulfillment of promise, set the controller's model
this.store.find('user', userId).then(function(returnedUser){
self.controller.set('model', returnedUser);
}
}
}