我有许多客户端功能,包括我在项目中的多个位置列出的find()查询和日期/时间翻译。使用Meteor,放置这些内容的最佳位置在哪里可以消除冗余和可能的不一致性?
此外,我将如何引用(例如)find()查询?会这样吗?或者有更好的方法完全这样做吗?
// JS file calling my re-usable function
Template.templatename.events({
'click .class': function {
var cats = function spaghetti();
return cats;
}
});
// JS file with re-usable functions
function spaghetti() {
return Collection.find();
}
答案 0 :(得分:0)
您确定要在点击事件中返回该集合吗?
如果你的意思是助手而不是事件,你可以这样做:
/**
* Only on catsList template
*/
Template.catsList.helpers({
cats: function() {
return Cats.find();
}
})
/**
* On all templates
*/
Template.registerHelper('cats', function() {
return Cats.find();
});
答案 1 :(得分:0)
我认为this就是你要找的东西,如果你有7个不同模板上的Collection.find();
(例如),你可以使用meteor-templates-extension
中的这个功能
<强> HTML 强>
<body>
{{> foo}}
{{> foo2}}
</body>
<template name="foo">
{{bar}}
<button type="button">Click</button>
</template>
<template name="foo2">
{{bar}} 2
<button type="button">Click 2</button>
</template>
<!-- and so on -->
<强> JS 强>
Template.foo.helpers = function () {
thisHelperIsAvaibleEverywhere:function(){
return "Test";
}
};
Template.foo.events({
'click button': function (event, template) {
console.log("foo button clicked");
}
});
Template.foo2.inheritsHelpersFrom("thisHelperIsAvaibleEverywhere");
Template.foo2.inheritsEventsFrom("foo");
所以现在两个模板Foo and Foo2
都可以使用相同的帮助器,并且它们将使用名为foo
的同一事件
看看并告诉我是否有效