'渲染'事件没有在流星中射击

时间:2014-10-31 22:47:13

标签: meteor

我正在尝试在流星模板中的字段上使用JQuery的自动完成功能。就我能够研究而言,你应该通过挂钩模板来实现这一目标。调用JQ' $(someElement).autocomplete()函数的处理程序的事件。当我尝试这个时,没有任何反应,并且我可以告诉我的事件处理程序模板的呈现'事件永远都不会发生。

这是模板:

<template name="loginOrWelcome">
  {{#if isLoggedIn}}
    <p>You are logged in as {{getUsername}}.</p>
    <button type="button" id="logout">Log out</button>
  {{else}}
    <form class="login">
      <input type="text" placeholder="Who are you?" id="loginName"/>
      <button type="button" id="submit">Log in</button>
      <span id="errorSpan"></span>
    </form>
  {{/if}}
</template>

这是处理程序:

Template.loginOrWelcome.events({
    "rendered": function() {
      var users = userCollection.find({});
      var arr = [];
      for(user in users) {
        arr.push(user.name);
      }
      alert("rendered: found " + arr.length + " names"); // This never pops up. Ever.
      $("#loginName").autocomplete({
        "source": arr
      });
    }
  });

这是流星1.0。请注意,我是一个完整的流星菜鸟,所以如果我错过了一些非常明显的东西,请随时赐教。

1 个答案:

答案 0 :(得分:2)

我想你想使用Template.loginOrWelcome.rendered(https://docs.meteor.com/#/basic/Template-rendered)。作为测试你可以做

    Template.loginOrWelcome.rendered = function() {
        console.log("get collections");
        var users = userCollection.find({});
        for (user in users) {
            console.log(user);
        }
    }

您可能希望限制用户集合。另外,我认为{{currentUser}}更常见(https://docs.meteor.com/#/basic/currentUser)而不是isLoggedIn。