【问题标题】:Data-binding in JsViewsJsViews 中的数据绑定
【发布时间】:2016-09-08 08:03:46
【问题描述】:

我有一个类似的 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,但我不确定相同的方法是否适用于我的场景。

【问题讨论】:

    标签: javascript jquery jsrender jsviews


    【解决方案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);
    

    example

    这里sample也可能对你有用。

    【讨论】:

      猜你喜欢
      • 2020-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多