Meteor:找不到属性';事件';次js文件中未定义的
所以我用Meteor开发了一个网站,我有一个基本的应用程序,主要是css、html和js。这些文件都很好用。我使用jquery.load()将另一个html加载到div中,还有另一个与该html文件关联的js文件——cm.html和cm.js,如下所示Meteor:找不到属性';事件';次js文件中未定义的,meteor,meteor-blaze,meteor-accounts,meteor-helper,Meteor,Meteor Blaze,Meteor Accounts,Meteor Helper,所以我用Meteor开发了一个网站,我有一个基本的应用程序,主要是css、html和js。这些文件都很好用。我使用jquery.load()将另一个html加载到div中,还有另一个与该html文件关联的js文件——cm.html和cm.js,如下所示 <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title></title>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title></title>
</head>
<body>
<div id="cm-container">
{{> addBook}}
{{> bookshell}}
</div>
</body>
<template name="bookshell">
<ul>
{{#each books}}
<li>{{subject}}</li>
{{/each}}
</ul>
</template>
<template name="addBook">
<form class="addBookForm">
<input type="text" class="subject" placeholder="Subject">
<button type="submit" class="btn btn-primary">add book</button>
</form>
</template>
当我通过jquery.load()将cm.html加载到我的主html文件时,我得到错误:
未捕获的TypeError:无法读取未定义的属性“events”
我不确定我做错了什么,因为在我的主js和html中使用相同的格式很好。我相信您可以通过使用会话变量而不是jquery.load()来实现这一点 例如,在主模板中定义一个会话变量,用于跟踪按钮是否已单击: main.js
Template.main.onRendered(function() {
Session.set("showForm", false);
});
Template.main.events({
'click .showForm' : function(event) {
event.preventDefault();
var showForm = Session.get("showForm");
Session.set("showForm", !showForm);
}
})
然后,您可以使用该会话变量动态隐藏/显示addBook模板:
{{#if showForm}}
{{> addBook}}
{{/if}}
main.js(或者任何客户端js文件)
主模板内部:
{{#if showForm}}
{{> addBook}}
{{/if}}
有没有什么原因可以让你用
jquery.load()
代替Meteor方法生成模板?当你通过jQuery做这件事时,Template.addBook
对象可能不会被创建。嘿@fuzzybabybunny我愿意以任何可行的方式做这件事,但我想做的是当有人点击一个按钮时,这个html文件会被加载到一个任意的div中。meteor方法能做到这一点吗?如果是这样,你怎么做?
{{#if showForm}}
{{> addBook}}
{{/if}}