我有一个名为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')
});
答案 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()
来消除重复项)。对于所有这些主题标签,您可以执行上述过滤或某种计数器。