我正在开发一个角度流星(-ionic)应用程序,我需要根据日历中的选定日期显示我的集合中的数据。 我使用不同数据类型的组件和日历,并使用Session变量将它们链接在一起。
我遇到了一个带有以下代码的无限循环:
客户端/组件/头版卡/医学/药剂card.component.js
function MedicineCardController($scope, $reactive, $location) {
$reactive(this).attach($scope);
var vm = this;
vm.subscribe('medicineData');
vm.helpers({
latestMedicineRegistration: () => {
var selectedDate = Session.get('selectedDate');
return Medicine.findOne(
{
// If I comment this no infinite-loop
timestamp: {$lt: moment(selectedDate).toDate()}
}, {
sort: {
timestamp: -1,
createdAt: -1
}
});
}
});
}
客户端/组件/头版卡/医学/ bloodsample-card.component.js
vm.helpers({
latestBloodsampleRegistration: () => {
// If I comment this, also no infinite loop
var selectedDate = Session.get('selectedDate');
return Bloodsample.findOne(
{
//timestamp: {$lt: moment(selectedDate).toDate()}
}, {
sort: {
timestamp: -1,
createdAt: -1
}
});
}
});
对于日历,我使用https://github.com/Russian60/flex-calendar组件,这是唯一修改所选日期的组件:
客户端/组件/日历/ calendar.component.js
function CalendarController($scope, $reactive) {
$reactive(this).attach($scope);
var vm = this;
Session.set('selectedDate', new Date().valueOf());
vm.options = {
defaultDate: new Date(),
minDate: "2015-01-01",
maxDate: "2020-12-31",
disabledDates: [],
dayNamesLength: 1,
mondayIsFirstDay: true,
eventClick: function (date) {
},
dateClick: function (date) {
Session.set('selectedDate', date.date.valueOf());
},
changeMonth: function (month, year) {
console.log('Month changed');
}
};
}
我的首页同时渲染这两个卡组件(还有几个基本相同)。我注意到的一些事情: