在 return 语句中使用数组在 meteor 中使用 iron router 动态加载 js 内容
Dynamically load js content with iron router in meteor using array in return statement
我想在meteor中使用iron router加载属于指定模板的js内容。 return 语句 return 是纯文本 - 它对包含一些 html 语句的数组没有用。如何通过在 Template.info.helpers 中使用以下数组和以下 html 语句来 return?
.js
Router.route('/', function () {
this.render('info');
});
Router.route('info');
Router.route('/hello', function () {
this.render('hello');
});
Template.info.helpers({
info() {
var iterate ="";
for (var i = 0; i < 10; i++){
iterate += "<div class='row'>" + i + "</div>";
}
return iterate;
} // Gives raw text -> Works NOT fine: <div class='row'>0</div><div class='row'>1</div>...
)};
Template.hello.helpers({
hello() {
var text = "Hello";
return text;
} // Works fine
)};
.html
<template name="hello">
<a href="{{pathFor route='info'}}">Home</a>
</br>
<a href="{{pathFor route='hello'}}">hello</a>
<p>{{hello}}</p>
</template>
<template name="info">
<a href="{{pathFor route='info'}}">Home</a>
</br>
<a href="{{pathFor route='hello'}}">hello</a>
<p>{{info}}</p> <!-- Gives raw text -> Works NOT fine: <div class='row'>0</div><div class='row'>1</div> ... and so on -->
</template>
请帮忙。已经有了一个有用的遮阳篷,但我现在遇到了另一个问题......:)
好的,我现在明白了。您正试图直接操纵助手的 DOM,但事实是您的助手永远不会 运行,因为您没有引用 html 中的助手。不仅你的助手没有任何反应数据。
比在你的助手中操作 DOM 简单得多,只需让助手 return
你需要的字符串,然后使用 {{hello}}
和 [=15= 将它们直接插入到你的模板中]
js:
Template.info.helpers({
info() {
return "Some info";
}
)};
Template.hello.helpers({
hello() {
return "Hello";
}
)};
html:
<template name="hello">
<a href="{{pathFor route='info'}}">Home</a>
</br>
<a href="{{pathFor route='hello'}}">hello</a>
<p id="hello">{{hello}}</p>
</template>
<template name="info">
<a href="{{pathFor route='info'}}">Home</a>
</br>
<a href="{{pathFor route='hello'}}">hello</a>
<p id="info">{{info}}</p>
</template>
{{hello}}
告诉 blaze 找到密钥名为 "hello" 的助手并将其插入此处.
注意 {{> hello}}
和 {{hello}}
会做完全不同的事情。第一个将插入整个 template,其 name 是 "hello",第二个将呈现 "hello" 助手.
如果您的助手返回 html 而不是纯文本,那么您需要在模板中使用三重大括号,即
{{{hellohtml}}}
我想在meteor中使用iron router加载属于指定模板的js内容。 return 语句 return 是纯文本 - 它对包含一些 html 语句的数组没有用。如何通过在 Template.info.helpers 中使用以下数组和以下 html 语句来 return?
.js
Router.route('/', function () {
this.render('info');
});
Router.route('info');
Router.route('/hello', function () {
this.render('hello');
});
Template.info.helpers({
info() {
var iterate ="";
for (var i = 0; i < 10; i++){
iterate += "<div class='row'>" + i + "</div>";
}
return iterate;
} // Gives raw text -> Works NOT fine: <div class='row'>0</div><div class='row'>1</div>...
)};
Template.hello.helpers({
hello() {
var text = "Hello";
return text;
} // Works fine
)};
.html
<template name="hello">
<a href="{{pathFor route='info'}}">Home</a>
</br>
<a href="{{pathFor route='hello'}}">hello</a>
<p>{{hello}}</p>
</template>
<template name="info">
<a href="{{pathFor route='info'}}">Home</a>
</br>
<a href="{{pathFor route='hello'}}">hello</a>
<p>{{info}}</p> <!-- Gives raw text -> Works NOT fine: <div class='row'>0</div><div class='row'>1</div> ... and so on -->
</template>
请帮忙。已经有了一个有用的遮阳篷,但我现在遇到了另一个问题......:)
好的,我现在明白了。您正试图直接操纵助手的 DOM,但事实是您的助手永远不会 运行,因为您没有引用 html 中的助手。不仅你的助手没有任何反应数据。
比在你的助手中操作 DOM 简单得多,只需让助手 return
你需要的字符串,然后使用 {{hello}}
和 [=15= 将它们直接插入到你的模板中]
js:
Template.info.helpers({
info() {
return "Some info";
}
)};
Template.hello.helpers({
hello() {
return "Hello";
}
)};
html:
<template name="hello">
<a href="{{pathFor route='info'}}">Home</a>
</br>
<a href="{{pathFor route='hello'}}">hello</a>
<p id="hello">{{hello}}</p>
</template>
<template name="info">
<a href="{{pathFor route='info'}}">Home</a>
</br>
<a href="{{pathFor route='hello'}}">hello</a>
<p id="info">{{info}}</p>
</template>
{{hello}}
告诉 blaze 找到密钥名为 "hello" 的助手并将其插入此处.
注意 {{> hello}}
和 {{hello}}
会做完全不同的事情。第一个将插入整个 template,其 name 是 "hello",第二个将呈现 "hello" 助手.
如果您的助手返回 html 而不是纯文本,那么您需要在模板中使用三重大括号,即
{{{hellohtml}}}