首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery in Template.rendered会被调用,但不会生效

问jQuery in Template.rendered会被调用,但不会生效
EN

Stack Overflow用户
提问于 2013-11-15 10:57:24
回答 1查看 115关注 0票数 0

我遇到了无法调试的下列问题:

我有一个textarea字段列表

代码语言:javascript
复制
<template name="sampleTemplate">
<ul>
  {{#each listOfTextFields}}
   < li > < textarea id="{{_id}}" > </li>
  {{/each}}
</ul>
</template>

为了把这份名单列出来,我

代码语言:javascript
复制
Template.sampleTemplate.listOfTextFields = function () {
   return applicationDB.find({ //some fields })
}

我还有一个事件映射到文本区域,当我按下"enter“键时,我会将一个新文档插入到集合中。当发生这种情况时,将重新呈现模板,并显示新的textarea。

代码语言:javascript
复制
Template.sampleTemplate.events({
   'keydown enter' : function (enterEv) {
        //add new document to collection
        Session.set("newTextAreaCreated", 1);
        Session.set("newItemId", newItemId);

    }
}

然后..。为了使它更易于用户使用,我尝试将注意力集中在新创建的文档上。所以在我的函数中:

代码语言:javascript
复制
Template.sampleTemplate.rendered = function () {
    if (Session.get("newTextAreaCreated") == 1){
        console.log("new text area is created")
        $(document.getElementById(Session.get("newItemId")).focus();
    }
Session.set("newTextAreaCreated", 0);
}

当我当前在上一个textarea字段时,上面的代码工作,当我按enter键时,它成功地创建了新项,并将重点放在它上。,我有一堆处理排序的其他代码,所以新条目肯定是在新条目下创建的(以防万一有些人会怀疑)。

但是-当我在中间的某个地方返回列表时,我按enter键,它成功地创建了它下面的项目,但是它没有关注它。我使用console.logs来确保调用呈现的函数,但重点并不明显。

这可能与它跳出一行的文本区域的“enter”效应有关吗?或者是完全不同的东西。我非常乐意实现一个更好的解决方案,如果文本区域正在造成问题等。

EN

回答 1

Stack Overflow用户

发布于 2013-11-15 15:12:05

在列表项周围放置{{#隔离}}块,并将文档插入委托给服务器端流星方法。隔离帮助程序将确保父模板不会重新呈现,服务器端流星方法将确保模拟不会在集合插入上运行。通过这种方式,呈现()只能触发一次,并且可以执行与DOM相关的事情,如聚焦或动画。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19999481

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档