javascript - 如何定义变量并在 jsviews 模板上使用它?

标签 javascript jsviews

我想为 html 元素定义一个唯一的 id,我必须将其作为辅助函数的参数传递。

唯一的 ID 是使用另一个辅助函数 (genearteUniqueId) 正确生成的,但我无法将其存储在变量中以重用它并将其传递给另一个函数。有人在使用 Jsviews 时遇到过这个挑战吗?

我尝试将generateUniqueId()结果分配给已定义的变量,如{{:uniqueId=~generateUniqueId()}},然后将uniqueId变量作为参数传递{{:~decorator(uniqueId}},但它没有'不工作。

<div class="graph-row">
   <span class="bar-graph" id="{{:~generateUniqueId()}}" {{:~decorator(outOfPockets[0].paid, outOfPockets[0].total, ~generateUniqueId())}}></span>
</div>

最佳答案

你可以定义自己的 getUniqueId() 来获取最后生成的 id,就像

var cnt = 0, lastId;

var myTmpl = $.templates("#myTmpl"),
  data = {},
  helpers = {
    generateUniqueId: function() {return (lastId = cnt++);},
    getUniqueId: function() {return lastId;},
    decorator: function(id) {return "title=YES" + id;}
  };

myTmpl.link("#page", data, helpers);

并写

<span id="{{:~generateUniqueId()}}" {{:~decorator(~getUniqueId())}}></span>

或者,(尽管如果您使用 JsViews 数据链接,而不仅仅是 JsRender 渲染,最好避免这种情况),您可以设置 allowCode为 true,使用以下方法:

$.views.settings.allowCode(true);
var cnt = 0;
function genId() {return cnt++;}
function dec(id) {return "title=YES" + id }

并写:

<span id="{{*:(theid=genId())}}" {{*:dec(theid)}}>c</span>

关于javascript - 如何定义变量并在 jsviews 模板上使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56562716/

相关文章:

javascript - 预览图像而不上传到我的服务器

javascript - Cloudkit JS 示例代码?

javascript - 如何在 Jsrender 模板中使用 javascript 变量

javascript - jsrender-从复杂结构中访问元素

javascript - for 循环中的 Vue 插槽范围

javascript - 重绘 RGraph SVG 半圆图表

php - 提交后如何重置表单?

javascript - jsView中引用数组元素

javascript - 如何绑定(bind)到jsview中的元素属性

javascript - 需要通过 TypeScript 使用 JsObservable 的帮助吗?