如何创建一个我可以在所有Template.template.events中使用的帮助器?

时间:2014-04-16 11:58:08

标签: javascript meteor

例如我有这样的事情:

post_form.js:

Template.postForm.events({
  "input #input-content": function() {

    var words, wordsNumber;

    Posts.update(this._id, {
      $set: {
        content: $("#input-content").html()
      }
    });

    words = $("#input-content > p").map(function() {
      $.text(this);
    }).get().join(" ");

    wordsNumber = words.trim().split(" ").length;

    $(".post-words-number").html(wordsNumber);
  }
});

post_list.js:

Template.postList.events({
  "click .open-post": function() {

    var words, wordsNumber;

    if (this.content) {
      $("#input-content").html(this.content);
    } else {
      $("#input-content").html("");
    }

    words = $("#input-content > p").map(function() {
      return $.text(this);
    }).get().join(" ");

    wordsNumber = words.trim().split(" ").length;

    return $(".post-words-number").html(wordsNumber);
  }
});

你可以看到:

    words = $("#input-content > p").map(function() {
      return $.text(this);
    }).get().join(" ");

    wordsNumber = words.trim().split(" ").length;

    return $(".post-words-number").html(wordsNumber);

重复两次。如何为这段代码创建一个帮助器,以便我可以在这两个模板中重用它?我应该把它放在哪里?

1 个答案:

答案 0 :(得分:1)

您想要的任何地方!当然,只要它在客户端。文件确实可以看到对方,因此可以从任何其他文件中访问一个写在一个文件中的代码。

所以,例如:

<强> /client/app.js

App = {};

App.doSomething = function(template) {
  ...
};

<强> /client/views/post_list.js

Template.post_list.events({
  'click .clickable': function(e, t) {
    App.doSomething(t);
    ...
  },
});