模板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}}

09-25 19:24