Привязка данных в JsViews

У меня есть литерал объекта Javascript, например

test : {
  length: 3,
  text: "Please enter 3 characters"
 }

Я хочу, чтобы текст отображался динамически в зависимости от длины, что-то вроде этого

test : {
      length: 3,
      text: "Please enter {{:length}} characters"
     }

Есть ли способ добиться этого в JsViews? Я просмотрел https://github.com/BorisMoore/jsviews/issues/327, но я не уверен, применим ли тот же подход в моем сценарии.


person user1776573    schedule 08.09.2016    source источник


Ответы (1)


Вы можете попробовать сделать вспомогательный формат, подобный этому

html

<div id="result"></div>

<script id="tmpl" type="text/x-jsrender">
  <input type="text" data-link="length"/>
  <br/>
  <span> {^{:~format(text, length)}} </span>
</script>

JS

var data = {
    length : 3,
    text : "Please enter {0} characters",
}

var _rxMark = /\{(\d+)\}/g;
var helpers = {
    format : function (string) {
        var data = [];
        for (var _i = 1; _i < arguments.length; _i++) {
            data[_i - 1] = arguments[_i];
        }
        return string.replace(_rxMark, function (substring, argIndex) {
            var result = data[parseInt(argIndex)];
            return result || "";
        });
    }
}

var tmpl = $.templates("#tmpl");

tmpl.link("#result", data, helpers);

см. пример.

Вам также может быть полезен здесь пример.

person Codd Wrench    schedule 08.09.2016