我正在尝试在用户点击按钮时对一个集合进行排序。它在我第一次点击时按预期工作,但是当我再次点击它时没有任何反应。
在meteor.startup上我按'日期'排序我的收藏。当用户单击类别按钮时,它会将排序更改为“类别”,然后我尝试处理每次单击相同的按钮,以将排序从升序更改为降序。
下面是处理用户点击的代码段:
(我几乎可以肯定问题就在这里)
layout.js
Router.configure({
layoutTemplate: 'layout',
waitOn: function() {
return Estagios.find({},{ sort: Session.get("sort_by")});
},
})
这是我的router.js:
Meteor.publish('nestagios', function() {
return Estagios.find({});
})
Publications.js
Meteor.startup(function() {
Session.set("sort_by", {
date: -1,
});
});
这是我的main.js
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet("Sample sheet");
Map<String, Object[]> data = new HashMap<String, Object[]>();
data.put("1", new Object[] {"empNo.", "name", "salary"});
data.put("2", new Object[] {1, "John", 1500000d});
data.put("3", new Object[] {2, "Sam", 800000d});
data.put("4", new Object[] {3, "Dean", 700000d});
Set<String> keyset = data.keySet();
int rownum = 0;
for (String key : keyset) {
Row row = sheet.createRow(rownum++);
Object [] objArr = data.get(key);
int cellnum = 0;
for (Object obj : objArr) {
Cell cell = row.createCell(cellnum++);
if(obj instanceof Integer)
cell.setCellValue((Integer)obj);
else if(obj instanceof String)
cell.setCellValue((String)obj);
else if(obj instanceof Double)
cell.setCellValue((Double)obj);
}
}
try {
//new excel file created by fileoutput stream object
FileOutputStream out =
new FileOutputStream(new File("/home/jagasan/workspace-playexcelApp/public/ExcelFile3.xlsx"));
workbook.write(out);
out.close();
System.out.println("Excel written successfully..");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return ok("file reading is completed");
任何人都可以帮我找出来,这里有什么问题?谢谢。
答案 0 :(得分:1)
由于您只是切换排序方向,因此您可以将事件处理程序简化为:
Template.layout.events({
'click #cat': function(event) {
event.preventDefault();
Session.set('sort_by',{category: -Session.get('sort_by').category});
});
会话变量将评估为{category: 1}
或{category: -1}
答案 1 :(得分:0)
在您的路由器中,您应该使用$ orderBy而不是排序
Router.configure({
layoutTemplate: 'layout',
waitOn: function() {
return Estagios.find({},{ $orderBy: Session.get("sort_by")});
},
})