我的应用程序中有一个功能,可以显示客户列表,然后编辑所有客户的页面。当用户重定向到编辑页面"预期模板或空,找到:未定义"时出现错误
以下是我的代码供参考 路线.js
Router.route('/user/:userId', function () {
this.render('customeredit');
this.layout('mainNav');
});
.HTML
<template name="customeredit">
{{#customerData}}
{{fname}}
{{/customerData}}
</template>
.JS
import { Template } from 'meteor/templating';
import { ReactiveVar } from 'meteor/reactive-var';
import '../templates/editUser.html';
import { Customers } from '../../imports/api/customers.js';
Template.customeredit.helpers({
customerData: function() {
var customerId = 'NpWkSWRpkQJKsNecG';
console.log(customerId);
console.log(Customers.findOne({_id: customerId}));
}
});
另外,请告诉我们如何从我上面的JS文件中的url中获取用户ID,因为我生成的URL是:http://localhost:3000/user/NpWkSWRpkQJKsNecG,我需要在助手中获取"NpWkSWRpkQJKsNecG"。
希望这可以解决您的问题并回答您的问题。
- 为什么会收到"预期模板或空,找到:未定义"错误?
您是否在问题中提供了页面的所有代码? 如果是这样,那么我怀疑问题出在您的模板定义中,您正在使用自定义块助手(例如{{#customerData}}
)。
是否已定义此块帮助程序? 我想知道您是否只是尝试使用 customerData 模板帮助程序。 如果是这种情况,则模板定义应如下所示:
<template name="customeredit">
{{customerData}}
</template>
模板帮助程序调用只是简单地包装在{{ }}
中。
- 如何从 url 访问用户 id 参数。
使用铁路由器,您可以使用this.params
访问路由参数。 通常,您会先查找数据,然后将其传递给模板。 例如:
Router.route('/user/:userId', function () {
var user = Customers.findOne({_id: this.params.userId});
this.render('customeredit', {data: user});
this.layout('mainNav');
});