清理我的Meteor功能和查询

时间:2015-01-21 22:13:21

标签: javascript meteor

我有许多客户端功能,包括我在项目中的多个位置列出的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();
}

2 个答案:

答案 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的同一事件

看看并告诉我是否有效