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