我有登录控制器。登录成功后,我正在调用controller.transitionToRoute(' patients.index'),这是我的仪表板。页面被reder但我的标题菜单没有更新。如果我尝试通过按F5刷新页面,那么我的标题会更新。
提前致谢。
我的控制器:
export default Ember.Controller.extend({
login: Ember.inject.service('testservice'),
actions: {
authenticate: function() {
var controller=this;
controller.set('login').currentUser=false;
controller.transitionToRoute('dashboard.index');
},
}
});
信息中心路线:
export default Ember.Route.extend({
authManager: Ember.inject.service('testservice'),
renderTemplate: function() {
this.render({
outlet: 'master',
});
},
});
application.hbs handlbar:
<header id="main">
{{#link-to 'index'}}<img id="logo" src="assets/logo.png"/>{{/link-to}}
<ul id="user">
<li><a id="user-icon"></a>
<ul>
{{#if isUser}}
<li>{{#link-to 'account.edit'}}Account{{/link-to}}</li>
<li>{{#link-to 'account.invitation'}}Invite{{/link-to}}</li>
<li><a {{action 'logout'}}>Logout</a></li>
{{else}}
<li><a {{action 'Userlogin'}}>Login</a></li>
<li>{{isUser}}</li>
{{/if}}
</ul>
</li>
</ul>
</div>
</header>
<div class="container">
{{outlet}}
</div>
应用程序控制器:
export default Ember.Controller.extend({
login: Ember.inject.service('testservice'),
isUser:function() {
return this.get('login').currentUser;
}.property('login'),
});
答案 0 :(得分:0)
controller.set('login').currentUser=false;
以及return this.get('login').currentUser;
错了!
首先是什么controller
?
您可能希望使用Ember.set(this, 'login.currentUser' true)
,this.set('login.currentUser', true)
或this.get('login').set('currentUser', true)
。
为了得到它一样。通常从不做...get(...).something
!
只需this.get('login.currentUser')
或Ember.get('login.currentUser')
。
顺便说一句,你可以重写
isUser:function() {
return this.get('login').currentUser;
}.property('login'),
与
isUser: Ember.computed.alias('login.currentUser'),