Juicer模板,如何在渲染前通过js修改模板内容?

Juicer 模板引擎

有一个需求,模板在渲染前需要对其内部的 select 进行添加 options,肯定有小伙伴会疑问什么要在渲染前更改模板,原因是这样的:此模板是两个弹出层的共用模板,页面加载的时候获得所有select options信息。有没有大牛可以提供下可行的思路...

Demo 如下:

<!-- 模板 -->
<script id="tpl" type="text/template">
    <div class="five wide field">
        <label>类型:</label>
        <!-- // 此部分通过js添加
        <select name="conditype">
            <option value="1">one</option>
            <option value="2">two</option>
        </select> -->
        {{=data.select}} // 引入的是字符串,非html标签
    </div>
</script>
<script>
    initModal();
    /*初始化模板*/
    function initModal() {
       $.ajax({
          url: 'wfConf/WfDSystemConfig.xml',
          dataType: 'xml',
          success: function(data) {
             var options = '';
             $(data).find('select selectOption').each(function() {
                 options += '<option value="'+$(this).attr('value')+'">'+
                                 $(this).html()+
                            '</option>';
             });                       
             var select = '<select name="conditype">' +
                             options +
                          '</select>';
             var selects = {data: select};
             //本想着通过juicer生成的html更改模板,
             //但是加入模板的select部分是字符串,并非想要的html代码
             var content = $('#tpl').html(juicer($('#tpl').html(), selects));
             $('#xxx').append(content);
          }  
        });
    }
</script>

ajax请求 data数据结构:

data

html 结构如下:

img

阅读 2.9k
1 个回答

难道不能通过传入数据进行if判断么?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题