我在Meteor中并且在我的项目中一直使用Reactive Var而没有任何问题。在目前的例子中,我不确定是否需要使用ReactiveDict,因为我没有与ReactiveVar发生反应。
我将reactiveVar的值设置为导致对象数组的mongo查询。
Template.MasterList.onCreated(function () {
this.teacherList = new ReactiveVar('');
});
Template.MasterList.onRendered(function () {
var weekNum = Session.get('CurrentWeek').substr(0, 1);
var week = 'Week' + weekNum;
var query1 = {};
query1[week] = { $in: ['JC', 'JF', 'F']};
this.teacherList.set(Programs.find({ $and: [{ CampYear: Session.get('GlobalCurrentCampYear') }, query1]}, { sort: { FullName: 1 }}).fetch());
});
数组中的一个对象如下:
{ ...
Students: {
Week1: {
Monday: ['Joe', 'Mary']
},
Week2: {},
Week3: {}
}
...
}
数组中的一个对象可能会改为:
{ ...
Students: {
Week1: {
Monday: ['Joe', 'Mary', 'Bill']
},
Week2: {},
Week3: {}
}
...
}
当对其中一个对象发生更改时,reactiveVar没有看到数组中的更改以重新启动帮助程序。这里是否使用ReactiveDict?
编辑:
辅助功能:
saturdayTeacher: function (name) {
var weekNum = Session.get('CurrentWeek').substr(0, 1);
var week = 'Week' + weekNum;
var teachers = Template.instance().teacherList.get();
for (var i = 0, len = teachers.length; i < len; i++) {
if (_.contains(teachers[i].Students[week].Saturday, name)) {
Meteor.defer(function () {
i = 0;
});
var teacher = teachers[i].FullName.split(' ');
return teacher[0] + " " + teacher[1].slice(0, 1);
}
}
},
答案 0 :(得分:1)
以一种非常简单的方式为您提供帮助的方法是在您的onRendered-Function中添加一个自动运行,您可以在其中设置ReactiveVar。因为onRendered-Function只执行一次。当我做对了,你想听一下光标的变化 AcctId Latitude Longitude output
0 123 40.50 -90.13 432.775598
1 123 40.53 -90.21 425.363959
2 123 40.56 -90.45 404.934516
3 123 40.63 -91.34 330.649766
和Session.get('CurrentWeek')
。
所以试试这个:
Session.get('GlobalCurrentCampYear')
&#13;
它将一直执行查询结果或会话值更改。