Как определить переменную и использовать ее в шаблонах jsviews? - PullRequest
0 голосов
/ 12 июня 2019

Я хотел бы определить уникальный идентификатор для HTML-элемента, который мне нужно будет передать в качестве параметра вспомогательной функции.

Уникальный 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>

1 Ответ

1 голос
/ 05 июля 2019

Ну, вы можете определить свой собственный getUniqueId (), который получает последний сгенерированный идентификатор, в соответствии с

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>
...