I’m trying to use a variable in my Blade template, but I always get
ReferenceError: files is not defined
My understanding is that the proper way to pass a variable to a template is something like this (client/ceres.js):
Meteor.startup(function() {
Files = new Meteor.Collection('files');
Template['files'].files = function() {
return Files.find();
}
});
(Copying from the “todos” example)
And then I should be able to use it in my template, views/files.blade:
ul
foreach files as file
li= file.filename
But I guess the variable is passed to the template too late? But if I take my JS out of Meteor.js then Template isn’t defined.
So I don’t get it. Either my template doesn’t exist, or the variable doesn’t exist, and it always crashes. How do I pass a simple variable along?
Same error with this:
ul
- for(var i=0; i<files.length; ++i)
li= files[i].filename
Turns out you can’t include files that use Template variables either. i.e., you can’t use the
includedirective in Bladeat allif you want to use variables in your template that haven’t been initialized by Meteor yet — you have to insert your template via jQuery/JS after the DOM has loaded. Example:views/body.blade:
views/files.blade:
client/main.js: