我需要一些想法。 Emberjs

时间:2015-04-09 18:59:53

标签: ember.js ember-data ember-cli

我有一个名为format-log

的帮手
//format-log.js
import Ember from 'ember';

export function formatLog(text) {
    var hashtag = text.match(/[#]\w+/g);
    var newText = text;
    if (hashtag !== null && hashtag !== undefined) {
        for ( var i = 0; i < hashtag.length; i++){
            newText =  newText.replace(hashtag[i], "<a href='' class='hash'>"+ hashtag[i] +"</a>");
        }   
        return newText;
    }else{
        return text;        
    }

}

export default Ember.Handlebars.makeBoundHelper(formatLog);

当我创建新日志时,我需要添加一个标签,例如

&#34;这是#log&#34;

的示例

该文本通过帮助程序并返回此格式

&#34;这是一个例子&lt; a href =&#34;&#34;&gt; #log&lt; / A&GT;&#34;

我想过滤包含相同主题标签的所有日志,比如Trends Twitter,我正在使用Ember cli和ember-data

我的模特

//log.js
import DS from 'ember-data';

export default DS.Model.extend({
  text: DS.attr('string'),
  date: DS.attr('date')
});

1 个答案:

答案 0 :(得分:0)

您可以首先在模型上定义hashTags属性来过滤主题标签,该属性将返回文本中找到的所有主题标签,例如:

//log.js
import DS from 'ember-data';

export default DS.Model.extend({
    text: DS.attr('string'),
    date: DS.attr('date'),

    hashTags: function() {
        // return array of all hash tags in the text, ie ['#tag1','#tag2']
        var text = this.get('text') || '';
        return text.match(/#\w+/g) || []; 
    }.property('text')
});

然后,你可以通过hashtag过滤多个日志模型(例如在控制器中):

modelsContainingTestTag: Ember.computed.filter('logs', function(log) {
    return log.get('hashTags').contains('#test');
})

其中logs引用了一组日志模型。

这只是一个开始,例如,您可以连接所有模型的所有主题标签以获取所有主题标签(使用uniq()来消除重复项)。对于所有这些主题标签,您可以执行上述过滤或某种计数器。