jquery - 在 jsViews 模板中启用按钮
问题描述
我想在 jsViews/JsRender 模板中启用从数据库中检索员工评论的按钮。那部分工作正常。但我需要一个显示“回复”的按钮,以便其他人可以将他们的评论添加到帖子中。单击该按钮时,应出现一个模式,允许他们输入文本。
该按钮确实按应有的方式显示,但我无法让它执行操作(例如触发警报框,更不用说模式了)。jsViews/jsRender 网站上的演示在我的服务器环境中工作,所以我知道这不是浏览器或 CDN 问题。
我的第一次尝试只是通过 jQuery 启用按钮:
<script id="theTmpl2" type="text/x-jsrender">
<div class="row">
<div class="card">
<li class="list-group-item">
<div class="card-block">
<h6 class="card-title"><b>{{:first_name}} {{:last_name}}
{{:id}}
</b></h6>
<p class="card-text text-muted large">
<b>Employee ID:</b> {{:emp_id}}<br>
<b>Employee:</b> {{:emp_first}} {{:emp_last}} <br>
<b>Subject:</b> {{:subject}} <br>
<b>Message:</b> {{:message}} <br>
<b>Post Type:</b> {{:post_type}} <br>
<b>Time:</b> {{:timestamp}} <br>
</p>
<button type="button" class="btn btn-primary btn-sm"
id="reply_btn">Reply</button>
<button type="button" class="btn btn-success btn-sm"
id="new_post_btn">New Post</button>
</li>
</div>
</div>
</div>
</script>
<script id="theTmpl2" type="text/x-jsrender">
<div class="row">
<div class="card">
<li class="list-group-item">
<div class="card-block">
<h6 class="card-title"><b>{{:first_name}} {{:last_name}} {{:id}}
</b></h6>
<p class="card-text text-muted large">
<b>Employee ID:</b> {{:emp_id}}<br>
<b>Employee:</b> {{:emp_first}} {{:emp_last}} <br>
<b>Subject:</b> {{:subject}} <br>
<b>Message:</b> {{:message}} <br>
<b>Post Type:</b> {{:post_type}} <br>
<b>Time:</b> {{:timestamp}} <br>
</p>
<button type="button" class="btn btn-primary btn-sm"
id="reply_btn">Reply</button>
<button type="button" class="btn btn-success btn-sm"
id="new_post_btn">New Post</button>
</li>
</div>
</div>
<script>
$( "#new_post_btn" ).click(function() {
alert( "Handler for .click() called." );
});
</script>
然后我尝试了(来自网站上的演示):
<button type="button" class="btn btn-primary btn-sm"
id="reply_btn">Reply</button>
<button type="button" class="btn btn-success btn-sm"
id="new_post_btn">New Post</button>
<span id="topLinked">
<button data-link="{on ~doSomething}">top level</button>
</span>
<script id="tmpl" type="text/x-jsrender">
<button data-link="{on ~doSomething}">in template</button>
使用此脚本:
<script>
var person = {};
var helpers = {
doSomething: function() {
alert("do something");
}
}
$.link(true, "#topLinked", person, helpers); // Data-link top-
level content
</script>
在我的第一次尝试中,使用 jQuery 方法,该按钮确实出现在屏幕上,但是当我单击它时没有任何反应。
在我的第二次尝试中,再次出现了两个按钮('doSomething'),但是当我点击它们时 - 什么也没有。
我还尝试了 jsViews/jsRender 站点上的演示中描述的其他几种方法,但这些方法也没有成功。
解决方案
你确定你没有犯过一个简单地阻止你的脚本运行的脚本错误。
这对我有用:
<body>
<span id="topLinked">
<button data-link="{on ~doSomething}">top level</button>
</span>
<script>
var person = {};
var helpers = {
doSomething: function() {
alert("do something");
}
}
$.link(true, "#topLinked", person, helpers); // Data-link top-level content
</script>
</body>
但是这里有一个换行符 - 就像你上面的副本
$.link(true, "#topLinked", person, helpers); // Data-link top-(You put a new-line here!)
level content
将是无效的javascript。您是否在脚本中设置了断点并在调试器中运行?
对于您的其他示例,您没有包含渲染和链接模板的代码......
无论如何,对于任何示例,例如https://www.jsviews.com/#link-events@button,您可以简单地复制完整代码选项卡的内容,然后它应该与演示中的一样工作(例如下面的代码)。然后您可以迭代更改为您自己的版本。
<html>
<head>
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script src="https://www.jsviews.com/download/jsviews.min.js"></script>
<link href="https://www.jsviews.com/samples/samples.css" rel="stylesheet" />
</head>
<body>
<style>
.red {color: red!important;}
</style>
<span id="result"></span>
<script id="tmpl" type="text/x-jsrender">
<button data-link="{on ~doSomething}" id="btn0">Click me</button>
{^{on ~doSomething}}<button id="btn1">Click me</button>{{/on}}
{^{on ~doSomething}}Click me{{/on}}
{^{on ~doSomething tmpl="Click me" /}}
{^{on ~doSomething /}}
{^{on ~doSomething height=18 width=75 class="red" id="btn5"}}Click me{{/on}}
</script>
<script>
var tmpl = $.templates("#tmpl");
var person = {};
var helpers = {
doSomething: function(ev) {
alert("do something. id: " + ev.target.id);
}
}
tmpl.link("#result", person, helpers); // Render and link the template
</script>
</body>
</html>
推荐阅读
- python - 你可以在 python 类的静态方法中使用 self 参数吗?
- python - 如何在没有拆分功能的情况下提取字符串并将其放入列表中?
- amazon-web-services - 是否可以使用 AWS lambda 将流量从 ELB 路由到 S3 存储桶?
- android - OSMDroid 显示多张地图和无限滚动
- python - 我正在尝试使用python中的递归查找数字中的特定数字
- java - 如何编写一种方法来查找 4 x 3 维双精度数组的平均值
- assembly - 方法作用域和变量作用域转换为 ASM
- python - 如何将项目排列到列表中并分配?
- android - Android Remote (WiFi) 调试本机应用程序不起作用
- angular - “订阅”类型的参数不可分配给“功能”类型的参数