gpt4 book ai didi

ember.js - 如何设置 Ember Controller 属性

转载 作者:行者123 更新时间:2023-12-03 06:37:10 25 4
gpt4 key购买 nike

我正在查看的 Ember 应用程序的应用程序模板使用条件检查来确定要显示哪些链接

{{#if isAuthenticated}}
link
{{else}}
link...
{{/if}}

isAuthenticated 属性是根据用户是否注册/登录有条件地设置的

App.AuthController = Ember.ObjectController.extend({
currentUser: null,
isAuthenticated: Em.computed.notEmpty("currentUser.email"),
login: function(route) {
var me;
me = this;
return $.ajax({
url: "/users/sign_in.json",
type: "POST",
data: {
"user[email]": route.currentModel.email,
"user[password]": route.currentModel.password
},
success: function(data) {

me.set('currentUser', data.user);

return route.transitionTo('user', data.user);

该应用程序能够毫无问题地处理注册和登录,但是,应用程序模板始终显示用户未经身份验证时的链接。根据您在此处看到的代码,是否存在某些原因导致 isAuthenticated 在登录时无法更新?

最佳答案

如果 @mavilein 和 @chopper 允许我发布明确的答案以完全解决这个问题,那么就这样:

应用程序 Controller

由于您的 ApplicationController 是备份您的应用程序模板的,因此您应该使用 needs API 请求 AuthController,如下所示:

App.ApplicationController = Ember.ObjectController.extend({
needs: ['auth']
...
});

应用模板

然后,您可以访问所有 AuthController 的属性,并在访问时添加 controllers.auth 前缀,因此您可以在应用程序模板中执行以下操作:

{{#if controllers.auth.isAuthenticated}}
link
{{else}}
link...
{{/if}}

如果您不喜欢长名称,还有一个快捷方式:

 App.ApplicationController = Ember.ObjectController.extend({
needs: ['auth'],
isAuthenticated: Ember.computed.alias('controllers.auth.isAuthenticated')
...
});

这样做后,您就可以在应用程序模板中简单地执行以下操作:

{{#if isAuthenticated}}
link
{{else}}
link...
{{/if}}

在本例中指的是 ApplicationController isAuthenticated 属性,该属性又是根据原始 Controller AuthController 计算得出的。

希望有帮助。

关于ember.js - 如何设置 Ember Controller 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18962911/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com