【问题标题】:parent template is not updating after transitiontoroute() in ember js在ember js中transitiontoroute()之后父模板没有更新
【发布时间】:2016-04-06 14:27:13
【问题描述】:
  1. 列表项

我有登录控制器。登录成功后,我正在调用我的仪表板 controller.transitionToRoute('patients.index')。页面被重新编辑,但我的标题菜单没有更新。如果我尝试按 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 把手:

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

【问题讨论】:

  • 能否附上相关代码?
  • @vikram7 ,我已经包含了代码。基本上我想在登录页面重定向到仪表板模板后更新我的应用程序模板。提前致谢。

标签: javascript ember.js


【解决方案1】:

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'),

【讨论】:

  • 对不起,我错过了添加 var controller=this;在我上面的控制器代码中。我已经更新了我的代码
  • @Gopalkrishna 仍然 controller.set('login').currentUser=false; 是错误的!不要使用=!
猜你喜欢
  • 1970-01-01
  • 2014-08-12
  • 1970-01-01
  • 1970-01-01
  • 2013-05-24
  • 2014-01-04
  • 1970-01-01
  • 2015-06-07
  • 2015-03-14
相关资源
最近更新 更多