gpt4 book ai didi

ember.js - Ember 组和订单

转载 作者:行者123 更新时间:2023-12-02 06:11:14 26 4
gpt4 key购买 nike

我有以下两个模型:

App.City = DS.Model.extend({
cityId: DS.attr('number'),
name: DS.attr()
});

App.Country = DS.Model.extend({
countryId: DS.attr('number'),
name: DS.attr()
});

我的城市装置看起来像这样:
App.City.FIXTURES = [
{ id: 1, name: 'Dallas', cityId: 1 },
{ id: 2, name: 'Waco', cityId: 2 },
{ id: 3, name: 'Waco', cityId: 2 },
{ id: 4, name: 'Nashville', cityId: 3 },
{ id: 5, name: 'Norfolk', cityId: 4 }
];

我的列表如下所示:
  • 达拉斯(删除)
  • 韦科(删除)
  • 韦科(删除)
  • 纳什维尔(删除)
  • 诺福克(删除)

  • 我希望我的列表按 cityId 分组,然后按名称排序:
  • 1x 达拉斯(删除)
  • 1x 纳什维尔(删除)
  • 1x 诺福克(删除)
  • 2x Waco(删除)

  • 当用户单击 Waco 旁边的删除时,2x 变为 1x,并从商店中删除一条 Waco 记录。如果用户再次单击删除,Waco 将从列表中删除,最后一条 Waco 记录将从存储中删除。

    我在同一个 View 上有两个不同的列表,并且希望每个列表具有相同的行为(分组和排序)。

    这是我现在拥有的代码: http://jsfiddle.net/cLNJj/1/

    最佳答案

    这是 JSBin 更新的内容:http://jsfiddle.net/qv8f8/ .

    基本上,它使用计算属性来仅获取 uniq 模型。你可以在这里看到:

    uniqCities: function() {
    var cities = this.get('content');
    var names = cities.mapBy('name');
    var uniqCities = cities.filter(function(item, idx, array) {
    if (names.contains(item.get('name'))) {
    names.removeObject(item.get('name'));
    return true;
    } else {
    return false;
    }
    });
    return uniqCities;
    }.property('content'),

    然后在 ObjectController 中,它有一个 count 属性,用于检查当前模型在其父内容中重复的次数:
    count: function() {
    var cities = this.get('parentController.content'),
    citiesWithThisName = cities.filterBy('name', this.get('name'));
    return citiesWithThisName.get('length');
    }.property('content'),

    随意问任何问题。

    在评论中更新了您的问题:

    我已更新 JSBin 以更改计数并正确删除已删除的项目。这里的主要/唯一变化是使用 model.length对于 uniqCities 计算属性。我实际上不确定为什么需要这样做,因为我很确定我不需要在自己的代码中这样做,但这可能是 Fixture 适配器的一个警告。 Check out the JS Bin here. .

    至于排序,我会 check out this answer另一个SO问题。这应该会引导你朝着正确的方向前进。

    啊,为了使它更具可重用性,我建议使用两个不同的阵列 Controller 用于该路线。这样,您可以创建 ArrayController 的基本抽象子类,它可以在其上具有 uniqueCities/Countries 方法,然后将其用于两个新 Controller 。不过,我会让你自己弄清楚。 :)

    关于ember.js - Ember 组和订单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19912670/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com