模板t1具有以下JS:
if (Meteor.isClient) {
Template.t1.onRendered(function() {
var mytasks = {
tasks: [
{ text: "This is task 1" },
{ text: "This is task 2" },
{ text: "This is task 3" } ] } } ) ; }
流星是否提供全局变量机制,使我可以复制
将局部mytasks变量转换为全局变量或与其他变量共享
模板以某种方式?
最佳答案
如果声明不带var
的变量,它将是客户端,服务器或两者的全局变量(取决于声明的位置)。例如:
客户端/lib/globals.js
myTasks = [{text: "This is task 1"}, {...}];
客户端/模板/t1.js
Template.t1.helpers({
tasks: myTasks
});
在这里,
myTasks
对客户端是全局的。请注意,我在lib
目录内的文件中声明了该变量,因此它将在其他客户端目录中的文件之前加载。如果
myTasks
将始终通过助手访问,则另一种可能性是声明这样的global helper:Template.registerHelper('myTasks', function() {
return [{text: "This is task 1"}, {...}];
});
然后在您的模板中:
{{#each myTasks}}
<p>{{text}}</p>
{{/each}}