Ember.js:使用{{render}}帮助程序时,在“父”控制器中访问属性

萨鲁斯

我有以下设置:

| // IndexController contains array of search result objects
| IndexController  (ArrayController) 
|     //Contains a search result object with row data (array) and search metadata
|---> ResultController (ObjectController) 
|          // Contains just the row data which is rendered into a sortable table 
|--------> TableController (ArrayController)

IndexController检索从用户发起搜索的服务器对象的列表。返回的每个对象都有一些有关搜索的元数据以及所有行数据。

每个对象都是使用{{#each}}Index模板中帮助器呈现的

{{#each itemController="result"}}
    {{view App.ResultView}}
{{/each}}

ResultView呈现元数据,然后使用如下{{render}}帮助器呈现实际表

<h2>{{pieceofMetaData}}</h2>
{{render "table" rows}}  

由于我指定了模型(在本例中为行数据),因此{{render}}助手为每个结果对象创建TableController的实例。例如,如果IndexController模型中有3个结果对象,则将创建3个TableController。TableController是一个ArrayController,可以利用ArrayController可以为我做的排序。在表格模板中,我渲染表格本身:

  <table>
      <thead>
          <tr>
              <th>First Name</th>
              <th>Last Name</th>
          </tr>
      </thead>
      <tbody>   
          {{#each}}  <!-- Each row of data is rendered here -->
              <tr>
                  <td>{{firstName}}</td>
                  <td>{{lastName}}</td>
              </tr>
          {{/each}}
      </tbody>
   </table>

这很好用,但是我现在遇到了一个问题。我需要能够在访问属性ResultController从里面TableController基本上,ResultController包含有关哪些列可排序的信息。我不知道如何ResultController从孩子那里访问父母TableController

我尝试needs: ['result']在“ TableController”内部使用,但这只是实例化的新实例,ResultController而不是让我访问实际的父级。

我在下面创建了一个可工作的jsbin,用于设置我在此描述的代码。

http://emberjs.jsbin.com/paceqaki/7/edit

任何帮助或建议,将不胜感激!

最好,

萨鲁斯

ppcano

在您的情况下,我将使用PersonTableComponent,检查示例使用渲染帮助器通常用于特定的路线上下文中。我认为,您正在尝试利用Ember.SortableMixin提供的'sortProperties','sortAscending'功能的优点,不幸的是,此mixin似乎仅适用于ArrayProxy实例,因此您需要在组件中实现排序功能。

<script type="text/x-handlebars" data-template-name="components/person-table">  
    <h3>{{header}} )</h3>
     <table>
      <thead>
          <tr>
             <th {{action 'toggleSortFirstName' }}>First Name</th>
             <th {{action 'toggleSortLastName'}}>Last Name</th>
          </tr>
      </thead>
      <tbody>   
          {{#each sortedPeople}}
              <tr>
                  <td>{{firstName}}</td>
                  <td>{{lastName}}</td>
              </tr>
          {{/each}}
      </tbody>
   </table>
</script>



<script type="text/x-handlebars" data-template-name="index">  
    {{#each controller}}
        {{person-table header=header people=rows}}
    {{/each}}
</script>

App.PersonTableComponent = Ember.Component.extend({
  sortProperty: 'lastName',
  sortAscending: true,


  sortedPeople: Em.computed(function(){

    // define your sorting functionality
    return this.get('people').sort( function(item) {
      return -1;
    });

  }).property('people.@each', 'sortProperty', 'sortAscending'),

  actions: {
    toggleSortFirstName: function() {


      var sortValue = !this.get('firstNameSortValue');

      // save current sort state
      this.set('fistNameSortValue', sortValue);
      this.setProperties({sortProperty: 'firstName',
                          sortAscending: sortValue});

    },
    toggleSortLastName: function() {

      var sortValue = !this.get('lastNameSortValue');

      // save current sort state
      this.set('lastNameSortValue', sortValue);
      this.setProperties({sortProperty: 'lastName',
                          sortAscending: sortValue});
    }
  }
});

查看EmberJS指南中的“组件使用助手渲染”部分

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从ember.js中的控制器检索计算的属性

来自分类Dev

Ember.js 1.0.0:基于子ItemController属性的父控制器中的已计算属性未更新

来自分类Dev

Ember.js 1.0.0:基于子ItemController属性的父控制器中的已计算属性未更新

来自分类Dev

Ember.js:控制器何时可以访问模型?

来自分类Dev

Ember JS:父路径/控制器如何观察其子路径/控制器的变化?

来自分类Dev

如何在Ember.js中的控制器中访问动态段?

来自分类Dev

控制器名称Ember JS

来自分类Dev

Ember.js:当控制器中的属性发生更改时,触发“ Ember.computed.filter”进行更新

来自分类Dev

Ember Data Transform中的访问控制器属性

来自分类Dev

访问控制器中的模型属性 - Ember

来自分类Dev

使用阵列控制器在Ember中创建/删除用户

来自分类Dev

Ember.js为{{render}}助手设置模型数据

来自分类Dev

Ember.js {{render}}辅助模型未正确设置

来自分类Dev

在Ember中启动Foundation JS(使用ember-cli)

来自分类Dev

如何在数组控制器中声明项目控制器-ember.js

来自分类Dev

Ement.js的Ember.js帮助器(使用ember-cli):车把错误:找不到属性

来自分类Dev

Ember.js,HighCharts-从控制器访问JSON数据

来自分类Dev

Ember.js,HighCharts-从控制器访问JSON数据

来自分类Dev

ember.js从视图向控制器发送动作

来自分类Dev

Ember JS在控制器内部创建“私有”功能

来自分类Dev

Ember.js控制器的“需要”语法

来自分类Dev

Ember.js从控制器调用模型的方法

来自分类Dev

Ember.js控制器不起作用

来自分类Dev

Ember.js事件控制器触发事件

来自分类Dev

Ember.js:哪个控制器负责?

来自分类Dev

ember.js:控制器的意外行为

来自分类Dev

Ember.js从控制器调用模型的方法

来自分类Dev

从模型获取数据到控制器(Ember.js)

来自分类Dev

Ember.js控制器的“需要”语法

Related 相关文章

  1. 1

    从ember.js中的控制器检索计算的属性

  2. 2

    Ember.js 1.0.0:基于子ItemController属性的父控制器中的已计算属性未更新

  3. 3

    Ember.js 1.0.0:基于子ItemController属性的父控制器中的已计算属性未更新

  4. 4

    Ember.js:控制器何时可以访问模型?

  5. 5

    Ember JS:父路径/控制器如何观察其子路径/控制器的变化?

  6. 6

    如何在Ember.js中的控制器中访问动态段?

  7. 7

    控制器名称Ember JS

  8. 8

    Ember.js:当控制器中的属性发生更改时,触发“ Ember.computed.filter”进行更新

  9. 9

    Ember Data Transform中的访问控制器属性

  10. 10

    访问控制器中的模型属性 - Ember

  11. 11

    使用阵列控制器在Ember中创建/删除用户

  12. 12

    Ember.js为{{render}}助手设置模型数据

  13. 13

    Ember.js {{render}}辅助模型未正确设置

  14. 14

    在Ember中启动Foundation JS(使用ember-cli)

  15. 15

    如何在数组控制器中声明项目控制器-ember.js

  16. 16

    Ement.js的Ember.js帮助器(使用ember-cli):车把错误:找不到属性

  17. 17

    Ember.js,HighCharts-从控制器访问JSON数据

  18. 18

    Ember.js,HighCharts-从控制器访问JSON数据

  19. 19

    ember.js从视图向控制器发送动作

  20. 20

    Ember JS在控制器内部创建“私有”功能

  21. 21

    Ember.js控制器的“需要”语法

  22. 22

    Ember.js从控制器调用模型的方法

  23. 23

    Ember.js控制器不起作用

  24. 24

    Ember.js事件控制器触发事件

  25. 25

    Ember.js:哪个控制器负责?

  26. 26

    ember.js:控制器的意外行为

  27. 27

    Ember.js从控制器调用模型的方法

  28. 28

    从模型获取数据到控制器(Ember.js)

  29. 29

    Ember.js控制器的“需要”语法

热门标签

归档