【问题标题】:'rendered' event not firing in meteor“渲染”事件未在流星中触发
【发布时间】:2014-11-01 07:00:14
【问题描述】:

我正在尝试在流星模板中的字段上使用 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 中。请注意,我是一个流星菜鸟,所以如果我遗漏了一些非常明显的东西,请随时赐教。

【问题讨论】:

  • Meteor 有一个功能齐全的自动完成包 - atmospherejs.com/mizzao/autocomplete
  • 谢谢!我去看看。
  • 注意:atmooth.js 网站上的自动完成有问题。所有source 链接都返回404。
  • 这是一个已知问题,请vote here

标签: meteor


【解决方案1】:

我认为您想使用 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。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-14
    • 2015-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-06
    • 1970-01-01
    • 2015-04-13
    相关资源
    最近更新 更多