【发布时间】:2020-05-30 03:22:55
【问题描述】:
在 JsViews 中我可以通过以下方式绑定事件:
<li id="myElement" data-link="{on 'click' eventHandler}">Some Content</li>
这将在单击后执行方法“eventHandler”。 但我需要一个在加载模板时触发的事件。我尝试了“准备好”或“展示”,但没有任何效果。有没有可以处理的事件?
【问题讨论】:
标签: jsviews
在 JsViews 中我可以通过以下方式绑定事件:
<li id="myElement" data-link="{on 'click' eventHandler}">Some Content</li>
这将在单击后执行方法“eventHandler”。 但我需要一个在加载模板时触发的事件。我尝试了“准备好”或“展示”,但没有任何效果。有没有可以处理的事件?
【问题讨论】:
标签: jsviews
您可以使用 onload 事件:-
https://www.w3schools.com/jsref/event_onload.asp
并将其附加到模板本身。如果您的选择有限或需要以特定方式执行此操作,请解释用例以及您为什么要以某种方式执行此操作,我们会尽力提供帮助。 万事如意,
菲尔
【讨论】:
{on xxx eventHandler}handles events on HTML elements,如鼠标事件、提交、更改、模糊等。
使用 JsViews,模板的加载直接发生在您自己的代码调用 link 方法的结果中。因此,渲染模板中的元素将在该调用期间被渲染,并且在您可以在渲染和链接之后运行您想要调用的任何代码之后立即渲染,例如使用 jQuery 找到您的 <li> 元素,并对元素进行操作
JsViews 还提供了很多life-cycle events on tags,所以如果你愿意,你可以创建一个自定义标签来处理这些事件:
例如,尝试运行以下代码:
<span id="result"></span>
<script>
var data = {};
$.views.tags("test", {
attr:"none",
render: function(data) {
debugger;
},
onBind: function(tagCtx, linkCtx) {
var elem = this.parentElem;
elem.textContent += " added text";
}
});
var myTmpl = $.templates('<ul><li id="myElement" data-link="{test}">Some Content</li></ul>');
myTmpl.link("#result", data);
$("#myElement").css('color', 'red');
</script>
【讨论】: