Ember.js Emberjs:如何在tweet上迭代并仅在与上次不同时显示日期?

Ember.js Emberjs:如何在tweet上迭代并仅在与上次不同时显示日期?,ember.js,handlebars.js,Ember.js,Handlebars.js,我是新来的灰烬,所以请原谅,如果这个问题已经涵盖其他地方 下面是我试图获取的标记的简化版本: <h1>Date1</h1> <div>Tweet 1 on Date1</div> <div>Tweet 2 on Date1</div> <h1>Date2</h1> <div>Tweet 3 on Date2</div> <div>Tweet 4 on Date2&l

我是新来的灰烬,所以请原谅,如果这个问题已经涵盖其他地方

下面是我试图获取的标记的简化版本:

<h1>Date1</h1>
<div>Tweet 1 on Date1</div>
<div>Tweet 2 on Date1</div>
<h1>Date2</h1>
<div>Tweet 3 on Date2</div>
<div>Tweet 4 on Date2</div>
Date1
Date1上的推文1
Date1上的推特2
日期2
Date2上的推特3
Date2上的推特4
我来自django,所以我习惯了
ifchanged
标签


得到这个的正确方法是什么?我查看了车把助手,但它们似乎是无状态的。

你不能,车把太没有逻辑了,无法完成这样的任务。在将其交给模板之前,您需要将其整理好

这可能是解决问题的一种方法,假设您有一个ArrayController类型的TweetsController。然后,您可以创建一个将遍历数组的计算属性,并返回一个过滤版本

noRepeatedDates: function() {
  var tweets = [];

  var lastTweet = Ember.Object.create();

  this.get('model').forEach(function(tweet) {
    if(tweet.get('date') == lastTweet.get('date')) {
      tweet.set('date', undefined);
    } else {
      lastTweet = tweet   
    }
    tweets.pushObject(tweet);
  }); 

  return tweets;
}.property('@each')
我没有测试这段代码,通常目的是让您了解在使用把手时如何思考


但是有了它,您应该能够遍历模板中的NOREPEATEDDATE。希望我能帮上忙。

这是一个有趣的方法。我真的希望有一种方法可以做到这一点,我不必把显示逻辑放在控制器中。作为替代,你可以创建一个视图,并做一些相同的事情。