2016-09-08 2 views
2

У меня есть Java-объект буквальным каксвязывания данных в JsViews

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

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

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

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

ответ

2

Вы можете попробовать сделать формат помощника, как этот

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); 

см example.

Он также может быть вам полезен sample.