Ember.js 无法按itemController中定义的属性对Ember ArrayController进行排序

Ember.js 无法按itemController中定义的属性对Ember ArrayController进行排序,ember.js,ember-data,Ember.js,Ember Data,我想根据itemController中定义/计算的属性对ArrayController进行排序。看这个。如果您按firstName(在模型中定义)排序,它可以正常工作,但是如果您按lastName(在itemController中定义)排序,它就不起作用。一定要玩分类游戏:对还是错。你知道怎么做吗 下面是另一个表现出相同行为的简单示例(第一个JSBin更接近我的实际代码)。可排序的mixin应用于内容,而不是内容的控制器 代码: 您可能需要将控制器上添加的任何逻辑添加到模型中 您前面提到的特定用

我想根据itemController中定义/计算的属性对ArrayController进行排序。看这个。如果您按firstName(在模型中定义)排序,它可以正常工作,但是如果您按lastName(在itemController中定义)排序,它就不起作用。一定要玩分类游戏:对还是错。你知道怎么做吗


下面是另一个表现出相同行为的简单示例(第一个JSBin更接近我的实际代码)。

可排序的mixin应用于内容,而不是内容的控制器

代码:

您可能需要将控制器上添加的任何逻辑添加到模型中

您前面提到的特定用例最适合该模型。实际上,在控制器和模型上画线的地方是脆弱的。如果属性需要跨控制器持久化,则应将其添加到模型中,尤其是当控制器不是单例控制器时。如果它是一个单例控制器,并且其下的模型从未更改,那么该属性可以存在于该控制器上

需要注意的是,在模型上定义属性并不意味着您必须从服务器获取属性,也不意味着您必须将属性保存到服务器

App.User = DS.Model.extend({
  name : DS.attr(),  // this will be saved to the server
  something: 31      // this isn't a DS attr, it isn't going anywhere
});
作为说明,我早些时候在一些事情上撒了谎

您可以从父控制器与子控制器对话

从父控制器内部,可以使用objectAt访问子控制器,并在父控制器上进行迭代

在本例中,这是父控制器

  console.log(this.objectAt(0));

  this.forEach(function(itemController){
    console.log(itemController);
  });

可排序的mixin应用于内容,而不是内容的控制器

代码:

您可能需要将控制器上添加的任何逻辑添加到模型中

您前面提到的特定用例最适合该模型。实际上,在控制器和模型上画线的地方是脆弱的。如果属性需要跨控制器持久化,则应将其添加到模型中,尤其是当控制器不是单例控制器时。如果它是一个单例控制器,并且其下的模型从未更改,那么该属性可以存在于该控制器上

需要注意的是,在模型上定义属性并不意味着您必须从服务器获取属性,也不意味着您必须将属性保存到服务器

App.User = DS.Model.extend({
  name : DS.attr(),  // this will be saved to the server
  something: 31      // this isn't a DS attr, it isn't going anywhere
});
作为说明,我早些时候在一些事情上撒了谎

您可以从父控制器与子控制器对话

从父控制器内部,可以使用objectAt访问子控制器,并在父控制器上进行迭代

在本例中,这是父控制器

  console.log(this.objectAt(0));

  this.forEach(function(itemController){
    console.log(itemController);
  });

在控制器中而不是在模型中定义属性的原因是可以通过用户交互修改属性。那么,在这种情况下,您将如何处理?这是正确的链接吗?我觉得没有什么不同于我的兴趣。谢谢你的回答。我的实际使用案例如下:用户可以操纵一个范围滑块,该滑块设置两个参数的值,这些参数反过来用于修改数组对象中的某些数值属性。该属性就是我要按其对数组进行排序的属性。我继续的方式是在控制器中定义这些参数。如果我理解正确,我宁愿在模型中定义它们并直接修改模型?我明白这是怎么可能的。直觉上,我认为控制器更适合这些参数。属性在控制器中定义而不是在模型中定义的原因是,属性可以通过用户交互进行修改。那么,在这种情况下,您将如何处理?这是正确的链接吗?我觉得没有什么不同于我的兴趣。谢谢你的回答。我的实际使用案例如下:用户可以操纵一个范围滑块,该滑块设置两个参数的值,这些参数反过来用于修改数组对象中的某些数值属性。该属性就是我要按其对数组进行排序的属性。我继续的方式是在控制器中定义这些参数。如果我理解正确,我宁愿在模型中定义它们并直接修改模型?我明白这是怎么可能的。不过,凭直觉,我认为控制器更适合这些参数。