无法读取 meteor 的铁路由器路线中对象的属性
Cant read properties of Object in meteor 's iron router's route
我想在路由中传递数据上下文中的对象。
我正在尝试读取 JavaScript 对象(包含业务逻辑)。如果我这样发送对象,那么我可以在模板中读取它的属性。但是如果我尝试通过读取它的一些属性来发送自定义对象。然后我得到错误,它无法读取同一对象的属性。
this.route('updateBook/' ,
{
path:'/updateBook',
loadingTemplate: 'loading',
data : function(){
var Book = Books.findOne({hasFinished:true});
var UpdateBookObject ={};
UpdateBookObject.currentPage = Book.currentPage;
UpdateBookObject.name = Book.name;
UpdateBookObject.author = Book.author;
UpdateBookObject.img = Book.img;
UpdateBookObject.numOfPages = Book.numOfPages;
UpdateBookObject.dateStarted = Book.dateStarted;
UpdateBookObject.dateToFinish = Book.dateToFinish;
UpdateBookObject.percentage = (UpdateBookObject.currentPage/UpdateBookObject.numOfPages).toFixed(2);
UpdateBookObject.pagesRemaining = UpdateBookObject.numOfPages - UpdateBookObject.currentPage;
var finishMoment = moment(UpdateBookObject.dateToFinish,"DD-MM-YYYY");
var startMoment = moment(UpdateBookObject.dateStarted,"DD-MM-YYYY");
UpdateBookObject.perDayToRead = finishMoment.diff(startMoment,'days');
return UpdateBookObject;
}
});
很确定这是因为 UpdateBookObject
在将所有这些属性添加到它之前 returning。你为什么不 return 你声明的 Book
变量(你说有效)然后使用模板助手进行计算?
Templates.updateBook.helpers({
updatedBook: function() {
//return data here
}
});
并注册全局模板助手以使用 moment 为您进行日期解析,这就是我对时间戳的处理方式:
全局模板助手:
Template.registerHelper("dateAndTime", function(date) {
if(date)
return moment(date).format('l LT');
}); //returns formatted Date and Localized Time, e.g. 2/22/2015 12:30PM.
模板中的空格键:
{{dateAndTime dateStarted}} //where createdAt is the field in the document
您还可以使用全局模板助手而不是标准模板助手来进行百分比计算,只需在模板中使用空格键语法传递 Book 对象的参数。
我想在路由中传递数据上下文中的对象。 我正在尝试读取 JavaScript 对象(包含业务逻辑)。如果我这样发送对象,那么我可以在模板中读取它的属性。但是如果我尝试通过读取它的一些属性来发送自定义对象。然后我得到错误,它无法读取同一对象的属性。
this.route('updateBook/' ,
{
path:'/updateBook',
loadingTemplate: 'loading',
data : function(){
var Book = Books.findOne({hasFinished:true});
var UpdateBookObject ={};
UpdateBookObject.currentPage = Book.currentPage;
UpdateBookObject.name = Book.name;
UpdateBookObject.author = Book.author;
UpdateBookObject.img = Book.img;
UpdateBookObject.numOfPages = Book.numOfPages;
UpdateBookObject.dateStarted = Book.dateStarted;
UpdateBookObject.dateToFinish = Book.dateToFinish;
UpdateBookObject.percentage = (UpdateBookObject.currentPage/UpdateBookObject.numOfPages).toFixed(2);
UpdateBookObject.pagesRemaining = UpdateBookObject.numOfPages - UpdateBookObject.currentPage;
var finishMoment = moment(UpdateBookObject.dateToFinish,"DD-MM-YYYY");
var startMoment = moment(UpdateBookObject.dateStarted,"DD-MM-YYYY");
UpdateBookObject.perDayToRead = finishMoment.diff(startMoment,'days');
return UpdateBookObject;
}
});
很确定这是因为 UpdateBookObject
在将所有这些属性添加到它之前 returning。你为什么不 return 你声明的 Book
变量(你说有效)然后使用模板助手进行计算?
Templates.updateBook.helpers({
updatedBook: function() {
//return data here
}
});
并注册全局模板助手以使用 moment 为您进行日期解析,这就是我对时间戳的处理方式:
全局模板助手:
Template.registerHelper("dateAndTime", function(date) {
if(date)
return moment(date).format('l LT');
}); //returns formatted Date and Localized Time, e.g. 2/22/2015 12:30PM.
模板中的空格键:
{{dateAndTime dateStarted}} //where createdAt is the field in the document
您还可以使用全局模板助手而不是标准模板助手来进行百分比计算,只需在模板中使用空格键语法传递 Book 对象的参数。