如何定义变量并在 jsviews 模板上使用它?
How to define a variable an use it on the jsviews templates?
我想为 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 data-linking,而不仅仅是 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>
我想为 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 data-linking,而不仅仅是 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>