1

正如关于车把的官方流星维基所说:

使一个帮助器对多个模板可见的唯一方法是为每个模板分配相同的函数,或者声明一个全局帮助器。

我正在使用望远镜构建一个应用程序,问题是用户配置文件中的“成员因为”的值丢失,如下图所示。
在此处输入图像描述
因为 /client/views/users/user_profile.js 中的源代码 Template.user_profile.createdAtFormatted = Template.user_item.createdAtFormatted; 不能正常工作。

这是 /client/views/users/user_item.js 中的助手Template.user_item

Template.user_item.helpers({
 createdAtFormatted: function(){
   return this.createdAt ? moment(this.createdAt).fromNow() : '–';
})

,当我像这样更改 /client/views/users/user_profile.js 中的代码时:

Template.user_profile.createdAtFormatted = function() {
     return this.createdAt ? moment(this.createdAt).fromNow() : '–';
}

或像这样制作一个全球帮手

Handlebars.registerHelper("createdAtFormatted", function(){
     return this.createdAt ? moment(this.createdAt).fromNow() : '–';
});

然后,一切正常
在此处输入图像描述

我想知道的是为什么作业Template.user_profile.createdAtFormatted = Template.user_item.createdAtFormatted;没有按我或作者希望的方式工作?

4

1 回答 1

3

这可能是因为helperMeteor 中的 & 有轻微的不一致。我认为助手是后来在 Meteor 中添加的。

基本上有两种方法可以在流星中定义助手。一种是:

Template.user_item.createdAtFormatted = function() {...}

下面应该做同样的事情:

Template.user_item.helpers({
    'createdAtFormatted':function() {
    ...
    }
});

但是后者使用helpers不会创建Template.user_item.createdAtFormatted定义,所以上面的结果是undefined. 这很可能是流星中的一个错误,应该修复。我打开了一个问题:https ://github.com/meteor/meteor/issues/886

于 2013-03-27T15:12:32.613 回答