Ember.js 在余烬中按日期筛选
我正在寻找一种方法来计算今天我的ember.store的所有条目。为了实现这一点,我编写了以下控制器方法:Ember.js 在余烬中按日期筛选,ember.js,Ember.js,我正在寻找一种方法来计算今天我的ember.store的所有条目。为了实现这一点,我编写了以下控制器方法: // controllers/todos-controller.js import Ember from 'ember'; export default Ember.ArrayController.extend({ sortProperties: ['time'], sortAscending: false, actions: { createTodo: functi
// controllers/todos-controller.js
import Ember from 'ember';
export default Ember.ArrayController.extend({
sortProperties: ['time'],
sortAscending: false,
actions: {
createTodo: function() {
var title = this.get('newTitle');
if (!title.trim()) { return; }
var todo = this.store.createRecord('todo', {
title: title
});
this.set('newTitle', '');
todo.save();
}
},
countTodos: function() {
// count all todos added since midnight
var d = new Date();
d.setHours(0,0,0,0);
return this.gte('time', d).get('length');
}.property('@each.time'),
});
还有这个模型
import DS from 'ember-data';
export default DS.Model.extend({
title: DS.attr('string'),
time: DS.attr('string', {
defaultValue: function() { return new Date(); }
})
});
但是,当我调用countTodos
时,我得到了错误
Uncaught TypeError: undefined is not a function
基于此,我认为我可以将
gte
应用于阵列我怎样才能改为按日期计数?很抱歉,我想发表评论,但我没有enoguh的声誉
事实上,在您的countTodos
中,此指的是您的arrayController
,而arrayController没有方法。gte
[更新]
应有关请求:
在Ember ArrayController中过滤内容的一种方法:(如果您需要过滤模板中{{each}}循环显示的内容,而不实际过滤“内容”,请使用ArragedContent
属性,如果只是为了获得带有过滤元素的arrayCopy,请在自定义函数中使用它…:)
嗨,温先生,谢谢你的回复。如何按范围而不是布尔比较进行筛选?在arrayController中有几种筛选数据的方法。最灵活的方法是在使用ArrayFilter属性的同时使用“arrangedContent”。Vinz先生,谢谢你的代码建议。它工作得很好。代码示例在return语句之前缺少closing“)”。
arrangedContent : function(){
var data = this.get("content");
data=data.filter(function(modelInstance){
//return true if the data should be in array false otherwise
//examples :
return modelInstance.get("myDateProperty")>new Date()
//2
return modelInstance.get("myStringProperty").match(new RegExp("myterms","myRegexp"))
//and so on ....
});
return data;
}