在下划线模板中调用函数

时间:2014-12-12 08:06:09

标签: javascript jquery function underscore.js

我想在模板下划线中使用一个函数。我的.javascript文件中创建的函数如下:

<script type="text/javascript">
   function en2per(str){
      str = typeof(str) == "number" ? str.toString() : str;
      var output = '';
      var num = 1728;
      for (var i = 0, len = str.length; i < len; i++) {
        if(str.charCodeAt(i)>=48 && str.charCodeAt(i)<=57)
          output += String.fromCharCode(str.charCodeAt(i)+num);
        else
          output += str[i];
        }
    return output;
    };

    var order_temp = _.template($("#order_template").html());
    var order_json = {orders:data.orders};
    $('#full .pages').append(order_temp(order_json));
</script>

这是我的模板下划线:

<script type="text/template" id="order_template">
   <ul class="item_list">
   <% _.each(orders,function(item){%>
     <li class="cells">
       <div class="part number">
          <span class="spans"><%= en2per(item.counter)%></%> // I get error this place...
       </div>
     </li>
   <% });%>
   </ul>
</script>

运行我的代码时出现错误...在我的模板中强调此功能 en2per()未找到!!! 现在我想在我的模板中调用此函数。

1 个答案:

答案 0 :(得分:2)

执行的顺序是:

1)需要声明en2per函数和下划线模板(任何订单都应该有效)

2)jQuery需要使用模板

3)下划线模板需要使用en2per函数

这一切都通过确保en2per函数不在$(document).ready()处理程序中来解决,并确保使用模板的jQuery(因此模板需要加载)是:< / p>

<script type="text/template" id="order_template">
    ....
</script>

<script>
    function en2per(str) {
        ....
    }

    $(document).ready(function() {
        var order_temp = _.template($("#order_template").html());
        var order_json = {orders:data.orders};
        $('#full .pages').append(order_temp(order_json));
    });
</script>

这里是JSFiddle