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);
        }
    }
}