【问题标题】:Sorting Ember ArrayController when iterating the model迭代模型时对 Ember ArrayController 进行排序
【发布时间】:2015-02-26 16:12:03
【问题描述】:

我有一个 ArrayController(文档),它显示其内容的 ObjectsController(文档)列表。

我的 ArrayController 模板(文档):

{{#each document in model}}
   {{render "document" document}}
{{/each}}

我面临的问题是 ArrayController 上的“sortProperties”和“sortAscending”属性不再起作用。我认为这是因为我正在循环“模型”。如果我循环“控制器中的每个文档”,则文档 ObjectControllers 似乎没有将分配给它们的模型作为对 .model 的调用,然后引发未定义的错误。我应该循环“控制器”还是“模型”?如果答案是模型,我该如何对其进行排序,如果答案是控制器,我如何获取每个控制器上设置的模型?

【问题讨论】:

  • arrangedContent 属性而不是 model 是否有效?默认情况下,modelcontent 的别名,arrangedContent 是它的有序属性。
  • @DRobinson 谢谢,使用arrangedContent 给了我我需要的东西——排序后的数组和每个控制器也得到了它的模型。如果您提供您的评论作为答案,我会接受它

标签: ember.js ember-data


【解决方案1】:

而不是修改基本模型,排序后的集合公开为arrangedContent

为了解释为什么是arrangedContent而不是arrangedModel,在Ember的ControllerMixin中,content被定义为model的别名,但它曾经是other way around

【讨论】:

    【解决方案2】:

    您可能必须在 ArrayController(文档)上设置 itemController 属性。

    请看这里:http://emberjs.com/api/classes/Ember.ArrayController.html

    编辑:另外,您第一次使用 {{#each document in controller}} 时就做对了。直接从模型中执行此操作将忽略控制器中的配置,其中包括您可能拥有的排序规则。

    【讨论】:

    • 设置了但是没有效果。
    • 但如果我循环控制器,模型不会被分配给各个 ObjectController。模板显示模型值,但在 ObjectController 上调用 .model 会导致未定义错误
    • 每当您访问对象(例如控制器)的属性时,都需要使用 Ember 提供的 .get 和 .set 方法。试试this.get('model'),有用吗?
    • 如果您尝试使用模型触发操作,请尝试从模板传递它,例如{{action 'save' this}} 而不是 {{action 'save'}} 然后尝试从控制器访问模型。
    猜你喜欢
    • 2012-05-16
    • 2015-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多