2015-05-31 42 views
2

在我的流星的应用程序(v1.1.0.2)注册多个帮手我有10名全球助手:流星 - 一次

Template.registerHelper("getUser", function(id) { 
    return Meteor.users.findOne({ 
     _id: id 
    }); 
}); 

Template.registerHelper("getPublication", function(id) { 
    return Publications.findOne({ 
     _id: id 
    }); 
}); 

Template.registerHelper("getCategory", function(id) { 
    return Categories.findOne(new Mongo.ObjectID(id)); 
}); 

Template.registerHelper("getAge", function(id) { 
    return Ages.findOne(new Mongo.ObjectID(id)); 
}); 

Template.registerHelper("getPhoto", function(id) { 
    return new FS.File(ImagesPublications.findOne({ 
     _id: id 
    })); 
}); 

Template.registerHelper("optionsCategories", function(id) { 
    return Categories.find().map(function(element) { 
     return { 
      label: element.name, 
      value: element._id._str 
     }; 
    }); 
}); 

Template.registerHelper("optionsAges", function(id) { 
    return Ages.find().map(function(element) { 
     return { 
      label: element.name, 
      value: element._id._str 
     }; 
    }); 
}); 

Template.registerHelper("allowedCategories", function(id) { 
    return Categories.find().map(function(element) { 
     return element._id._str; 
    }); 
}); 

Template.registerHelper("allowedAges", function(id) { 
    return Ages.find().map(function(element) { 
     return element._id._str; 
    }); 
}); 

Template.registerHelper("prettifyDate", function(date) { 
    return moment(date).format('L HH:mm:ss'); 
}); 

我试图使用一个对象来压缩这一切都在一个单一的函数调用:

Template.registerHelper({ 
    getUser: function(id) { 
     return Meteor.users.findOne({ 
      _id: id 
     }); 
    }, 
    getPublication: function(id) { 
     return Publications.findOne({ 
      _id: id 
     }); 
    }, 
    getCategory: function(id) { 
     return Categories.findOne(new Mongo.ObjectID(id)); 
    }, 
    getAge: function(id) { 
     return Ages.findOne(new Mongo.ObjectID(id)); 
    }, 
    getPhoto: function(id) { 
     return new FS.File(ImagesPublications.findOne({ 
      _id: id 
     })); 
    }, 
    optionsCategories: function(id) { 
     return Categories.find().map(function(element) { 
      return { 
       label: element.name, 
       value: element._id._str 
      }; 
     }); 
    }, 
    optionsAges: function(id) { 
     return Ages.find().map(function(element) { 
      return { 
       label: element.name, 
       value: element._id._str 
      }; 
     }); 
    }, 
    allowedCategories: function(id) { 
     return Categories.find().map(function(element) { 
      return element._id._str; 
     }); 
    }, 
    allowedAges: function(id) { 
     return Ages.find().map(function(element) { 
      return element._id._str; 
     }); 
    }, 
    prettifyDate: function(date) { 
     return moment(date).format('L HH:mm:ss'); 
    } 
}); 

我试过上面没有成功,所以我想知道我是否可以做类似的事情。

回答

4

当然,只要把你的助手在一个键/值字典是这样的:

var helpers = { 
    getAge: function(id) { 
    return Ages.findOne(new Mongo.ObjectID(id)); 
    } 
}; 

然后使用循环遍历每一对和内注册帮手。

_.each(helpers, function(value, key){ 
    Template.registerHelper(key, value); 
}); 
+1

该死的,你是对的。我不知道为什么我不这么认为,这很明显。我像个白痴一样倒下......谢谢! – ivan0590