无法读取 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 对象的参数。