我试图通过使用通过自定义身份验证服务注入的计算isAuthenticated
属性来改变我的手柄脚本。在my-application
组件中,通过以下代码可以解决一些问题:
{{#if isAuthenticated}}
<li>{{#link-to "accounts.my-account"}}My Account{{/link-to}}</li>
<li>{{#link-to "accounts.search-accounts"}}Find other Medici Users{{/link-to}}</li>
{{/if}}
import Ember from 'ember';
export default Ember.Component.extend({
auth: Ember.inject.service(),
user: Ember.computed.alias('auth.credentials.email'),
isAuthenticated: Ember.computed.alias('auth.isAuthenticated'),
actions: {
signOut () {
this.sendAction('signOut');
},
},
});
当我尝试在不同的位置(在这种情况下,帐户路由)中实现这个完全相同的代码时:
<button type="btn" {{action "test"}}>test</button>
{{#if isAuthenticated}}
<p>test</p>
{{/if}}
{{outlet}}
import Ember from 'ember';
export default Ember.Route.extend({
auth: Ember.inject.service(),
user: Ember.computed.alias('auth.credentials.email'),
isAuthenticated: Ember.computed.alias('auth.isAuthenticated'),
actions: {
test () {
console.log(this.get('user'));
console.log(this.get('isAuthenticated'));
}
}
});
模板没有变化(虽然当您使用if
切换unless
时会出现测试。让这一切变得陌生的是,当我点击test
按钮时,它成功触发了isAuthenticated的结果。为什么我无法将此属性从我的js文件传输到我的hbs文件?
答案 0 :(得分:2)
您需要在控制器中定义属性;账户路线是否有控制器?路径上的道具(from Tkinter import *
root = Tk()
root.geometry("300x200")
root.configure(bg='#252525', relief=SOLID, bd=2)
canvas = Canvas(root, width=200, height=100, bg='white')
canvas.place(x=50, y=50, width=200, height=100)
text = Text(root)
text.place(x=50, y=70, width=200, height=60)
text.config(bg='gray')
canvas.create_line(170, 0, 170, 700, width='5', fill='green')
mainloop()
除外)不会直接显示在模板上。
另一种方法是创建一个包装帐户模板的组件;你可以在那里注入auth服务而不是控制器,如果你不想要一个或想要保持小。
请注意,我们团队所做的一件事就是自动将auth服务(或者更确切地说,等效的会话服务)注入到所有组件中;你可以使用初始化器完成此操作。这有点减少了样板。