Javascript Ember.js-是否可以在一个模板中使用{action}来影响另一个模板中的{{bind attr}}

Javascript Ember.js-是否可以在一个模板中使用{action}来影响另一个模板中的{{bind attr}},javascript,model-view-controller,ember.js,Javascript,Model View Controller,Ember.js,是否可以在一个模板中使用{action}来影响另一个模板中的{{bind attr}} 目标是在1个模板中获取操作,以更改另一个模板中的绑定属性。两者都有不同的控制器 例如: 模板1: <script type="text/x-handlebars" data-template-name="diary"> <header class="dashboard-component-header" {{ action expand }}></header> &

是否可以在一个模板中使用{action}来影响另一个模板中的{{bind attr}}

目标是在1个模板中获取操作,以更改另一个模板中的绑定属性。两者都有不同的控制器

例如:

模板1:

<script type="text/x-handlebars" data-template-name="diary">
    <header class="dashboard-component-header" {{ action expand }}></header>
</script>
我认为您可以使用“需要”钩子访问第一个控制器中的第二个控制器

然后在一个操作上,使用第二个控制器的对象设置使用bind attr绑定的属性

差不多

App.DiaryController = Ember.Controller.extend({
  needs: "diarySection", 
  actions: {
    expand: function () {
        controllers.diarySection.set('state', false);
    }
  }
});
其中“diarySection”对应于模板2的控制器App.DiarySectionController
您可以使用controllers.diarySection访问第二个控制器的实例。模板/控制器2是否只有一个实例?一种简单的方法是在应用程序范围中定义“状态”。比如App.state=false;在您的控制器中,您基本上可以切换App.state。
App.DiaryController = Ember.Controller.extend({
    actions: {
        expand: function () {
            this.toggleProperty('state');
        }
    }
});
App.DiaryController = Ember.Controller.extend({
  needs: "diarySection", 
  actions: {
    expand: function () {
        controllers.diarySection.set('state', false);
    }
  }
});