Bad*_*ads 8 javascript jquery handlebars.js meteor
例如,我的HTML是
<template name="atest">
<a href="{{route}}" data-test="test">Click</a>
</template>
Run Code Online (Sandbox Code Playgroud)
在流星模板助手中,我希望能够选择锚标记.
Template.atest.route = function() {
console.log(this.data-test);
};
Run Code Online (Sandbox Code Playgroud)
我不确定这是否可以做到,但当然,不能通过我尝试的任何方法来完成.我知道有一种方法可以在模板实例中传递参数,但我不希望这样.我希望能够选择模板实例所在的锚标记并对其执行某些操作.
感谢我能得到的任何帮助.
sbk*_*ing 20
不在助手中,但在rendered回调中你可以做到:
Template.atest.rendered = function() {
var el = this.find("[data-test]");
};
Run Code Online (Sandbox Code Playgroud)
在事件处理程序中:
Template.atest.events({
"click a": function( event, template ) {
var selectEl = template.find("[data-test]"); // Arbitrary element in template
var targetEl = event.target; // Element that triggered the event
var currentEl = event.currentTarget; // Element that is handling this event function (the element referenced by "click a")
}
});
Run Code Online (Sandbox Code Playgroud)
当然,你也可以这样做:
Template.atest.events({
"click a[data-test]": function() {
// ...
}
});
Run Code Online (Sandbox Code Playgroud)
如果这些选项都不适合您,您可能需要重新评估您的方法.需要从辅助函数访问元素表示您正在尝试使用过程编码样式而不是模板驱动样式.通常,不要将数据存储在DOM节点上,将其存储在模板的上下文对象中.
你能否提供一些关于你究竟要做什么的额外背景?可能有更好的方法.
想一想:必须调用帮助器才能呈现元素.如果元素甚至不存在,您将如何访问该元素?
编辑:这是一种模板驱动的方法,href根据定义的位置将属性附加到模板.基本上,您希望包含必要的数据以在任何关联的父模板中生成链接模板.然后,只需使用该数据调用链接模板:
HTML:
<body>
{{> parent1}}
</body>
<template name="parent1">
<div>
{{> link linkData}}
</div>
<ul>
{{#each arrayData}}
<li>{{> link}}</li>
{{/each}}
</ul>
{{#with arbitraryData}}
{{> parent2}}
{{/with}}
</template>
<template name="parent2">
<p>{{> link transformedData}}</p>
</template>
<template name="link">
<a href="{{href}}">{{text}}</a>
</template>
Run Code Online (Sandbox Code Playgroud)
JS:
if (Meteor.isClient) {
Template.parent1.linkData = {
href: "/path/to/something",
text: "Parent Template 1 Link"
};
Template.parent1.arrayData = [
{ href: "array/path/1", text: "Array path one" },
{ href: "array/path/2", text: "Array path two" }
];
Template.parent1.arbitraryData = {
link: "/foo/bar/baz",
name: "Parent Template 2 Link"
};
Template.parent2.transformedData = function() {
return { href: this.link, text: this.name };
};
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16020 次 |
| 最近记录: |