Meteor:在呈现模板时使用 javascript 中的模板变量
Meteor: Using template variables in javascript upon template being rendered
我想在加载(呈现)模板时使用 javascript 修改 DOM。但是,我似乎无法首先获得传递给模板的变量。似乎我唯一可以使用这些变量的地方是 HTML 模板本身或模板助手。但是我想在模板完成渲染时执行 javascript(依赖于那些变量)。
html渲染的很好,不过我还是把它放在这里供参考。
HTML 模板:
<template name="cityDataset">
{{#each airports}}
<li>{{name}}
<ul>
<li>{{description}}</li>
<li><a href="{{mapLink}}" target="_blank">Directions from...</a></li>
</ul>
</li>
{{/each}}
</template>
Javascript 文件:
Template.cityDataset.helpers({
airports: function() {
console.log("helper-name: " + this.name); // New York City
console.log("helper-country: " + this.country); // United States
return CityDatasets.findOne({name: this.name, country: this.country}).airports;
},
});
Template.cityDataset.rendered = function() {
console.log("name: " + this.name); // undefined
console.log("country: " + this.country); // undefined
// I want to do stuff here! But I can't get the name and country :(
//
// doSomethingCoolToDOM(this.name, this.country);
}
我在控制台得到的结果是这样的:
> helper-name: New York City
> helper-country: United States
> name: undefined
> country: undefined
在渲染内部,您需要使用 this.data 访问模板的数据上下文。
Template.cityDataset.rendered = function() {
console.log("name: " + this.data.name);
console.log("country: " + this.data.country);
}
我想在加载(呈现)模板时使用 javascript 修改 DOM。但是,我似乎无法首先获得传递给模板的变量。似乎我唯一可以使用这些变量的地方是 HTML 模板本身或模板助手。但是我想在模板完成渲染时执行 javascript(依赖于那些变量)。
html渲染的很好,不过我还是把它放在这里供参考。
HTML 模板:
<template name="cityDataset">
{{#each airports}}
<li>{{name}}
<ul>
<li>{{description}}</li>
<li><a href="{{mapLink}}" target="_blank">Directions from...</a></li>
</ul>
</li>
{{/each}}
</template>
Javascript 文件:
Template.cityDataset.helpers({
airports: function() {
console.log("helper-name: " + this.name); // New York City
console.log("helper-country: " + this.country); // United States
return CityDatasets.findOne({name: this.name, country: this.country}).airports;
},
});
Template.cityDataset.rendered = function() {
console.log("name: " + this.name); // undefined
console.log("country: " + this.country); // undefined
// I want to do stuff here! But I can't get the name and country :(
//
// doSomethingCoolToDOM(this.name, this.country);
}
我在控制台得到的结果是这样的:
> helper-name: New York City
> helper-country: United States
> name: undefined
> country: undefined
在渲染内部,您需要使用 this.data 访问模板的数据上下文。
Template.cityDataset.rendered = function() {
console.log("name: " + this.data.name);
console.log("country: " + this.data.country);
}