4

我看到本教程使用 Angular.js 编写了一个演示应用程序。它是 Todo 演示 ( http://angularjs.org ),他只需在文本框中输入内容,然后就可以轻松地反映在页面上。

我想在 Meteor 中重新创建此功能,但效果不佳。首先,由于某种原因,它不会更新最后一个字母。此外,使用 Angular.js 执行此操作的演示视频更容易并且效果更好,在 Meteor 中是否有更好的方法来执行此操作?

另外,如果有办法访问 DOM 而不是辅助函数?在事件函数中,我可以使用“t”变量来访问 DOM,但在辅助函数中我不确定如何,例如,如果我想从辅助函数内的 div 中获取文本。我不确定如何。

这是我的 Meteor 代码,这是一个现场演示:http ://todotestapp.meteor.com

提前致谢

HTML

<head>
  <title>Todo</title>
</head>

<body>
  {{> hello}}
</body>

<template name="hello">
  <input id="personName" type="text">
  <h1>Hello {{personName}}!</h1>

</template>

流星Javascript

if (Meteor.isClient) {
Template.hello.helpers({
    personName: function () {
        return Session.get("personName");
    }
});

Template.hello.events({
    'keypress #personName': function (e, t) {
        Session.set("personName", t.find("#personName").value);
    }
});

}
4

2 回答 2

5

您应该使用“输入”事件。无需使用 jQuery,模板实例 .find 方法就可以了。

Template.hello.events({
    'input #personName': function (e, t) {
        Session.set("personName", t.find("#personName").value);
    }
});

这按预期工作。

于 2013-08-24T14:00:57.717 回答
4

1)使用 keyup 事件检测何时输入了新字母 2)使用普通 jquery 获取值,这样做:

Template.hello.events({
    'keyup #personName': function () {
        Session.set("personName", $("#personName").val());
    }
});
于 2013-08-24T09:08:41.513 回答