Javascript EmberJS-如何在从子控制器更新属性后刷新应用程序模板?

Javascript EmberJS-如何在从子控制器更新属性后刷新应用程序模板?,javascript,ember.js,Javascript,Ember.js,我有一个应用程序控制器和一个登录控制器。调用LoginController.login()操作时,也会触发ApplicationController.login()。“登录”模板被更新,其中“应用程序”模板仍然显示“尚未登录”,保持初始设置。如何更新/触发应用程序模板以显示“已登录!” 模板: <script type="text/x-handlebars"> <p> {{#if isLogin}} Logged in!

我有一个
应用程序控制器
和一个
登录控制器
。调用
LoginController.login()
操作时,也会触发
ApplicationController.login()
。“登录”模板被更新,其中“应用程序”模板仍然显示“尚未登录”,保持初始设置。如何更新/触发应用程序模板以显示“已登录!”

模板:

  <script type="text/x-handlebars">
    <p>
        {{#if isLogin}}
            Logged in!
        {{else}}
            Not logged in, yet
        {{/if}}
    </p>
    <p>{{outlet}}</p>
  </script>

  <script type="text/x-handlebars" id="login">
    <h1>LoginController</h1>
        <p>
        {{#if isLogin}}
            Logged in! <button {{action 'logout'}} class="btn btn-primary">Logout</button>
        {{else}}
            Not logged in, yet <button {{action 'login'}} class="btn btn-primary">Login</button>
        {{/if}}
        </p>

 </script>
是一个干货箱吗

App.ApplicationController = Ember.ObjectController.extend({
    isLogin : false,
    actions: {
        login: function() {
            this.set('isLogin', true);
        },
        logout: function() {
            this.set('isLogin', false);
        }
    }
});

App.LoginController = Ember.ObjectController.extend({
    needs: ["application"],
    isLogin : false,
    actions: {
        login: function() {
            this.set('isLogin', true);
            this.get('controllers.application').send('login');
        },
        logout: function() {
            this.set('isLogin', false);
            this.get('controllers.application').send('logout');
        }
     }
 });
原始响应

是一个正在工作的jsbin

App.ApplicationController = Ember.ObjectController.extend({
    isLogin : false,
    actions: {
        login: function() {
            this.set('isLogin', true);
        },
        logout: function() {
            this.set('isLogin', false);
        }
    }
});

App.LoginController = Ember.ObjectController.extend({
    needs: ["application"],
    isLogin : false,
    actions: {
        login: function() {
            this.set('isLogin', true);
            this.get('controllers.application').send('login');
        },
        logout: function() {
            this.set('isLogin', false);
            this.get('controllers.application').send('logout');
        }
     }
 });

你不能在App.LoginController中使用以下类似的东西来删除代码吗?{{action'auth''login'}}带有以下操作:{auth:function(method){this.toggleProperty('isLogin');this.get('controllers.application').send(method);}}}Duncan是对的,此代码需要简化-我这样做不是为了模拟原始代码。例如,没有理由有两个isLogin属性。它可以驻留在ApplicationController中,LoginController可以在那里设置它,也可以按照Duncan的建议使用操作处理程序设置它。