2013-02-17 3 views
1

Я использую blueimp-jquery-file-upload с smarty, а blueimp использует странные скриптовые теги с html-тегами в скрипте и конфликтует с движком smarty, и в результате я «Ошибка в работе скрипта.Smarty burst с html-тегами в Script

<script id="template-upload" type="text/x-tmpl"> 

Вот тег скрипт, используемый для загрузки screenshot

Но когда это делают, он не приходит в правильном порядке, я попытался изменить разделитель, но все-таки это не работа

Вот Визуализированное HTML

screenshot

Пожалуйста, кто-нибудь сказать мне, как я могу это исправить, когда я помещал какой-то другой JS вместо сценария загрузки blueimp, он отлично работает.

Даже это не работает

{literal} 
<script id="template-upload" type="text/x-tmpl"> 
var a = 3; 
<div class="B">sdfsdfs</div> 
var j = 5; 
<div class="A"></div> 
</script> 
{/literal} 

ответ

2

Этот плагин BlueImp использует другой плагин JQuery под названием Templates engine для генерации HTML из JavaScript. Они используют тот же синтаксис, что и Smarty, который, кажется, нарушает ваш код. Однако плагин BlueImp позволяет переопределить этот язык шаблонов, вручную определяя HTML как плагин опции. Ваш JavaScript будет выглядеть примерно так:

$('#fileupload').fileupload({ 
    filesContainer: $('#upload_files_container'), 
    uploadTemplateId: null, 
    downloadTemplateId: null, 
    uploadTemplate: function (o) { 
     var rows = $(); 
     $.each(o.files, function (index, file) { 
      var row = $('<tr class="template-upload fade">' + 
       '<td class="preview"><span class="fade"></span></td>' + 
       '<td class="name"></td>' + 
       '<td class="size"></td>' + 
       (file.error ? '<td class="error" colspan="2"></td>' : 
         '<td><div class="progress">' + 
          '<div class="bar" style="width:0%;"></div></div></td>' + 
          '<td class="start"><button>Start</button></td>' 
       ) + '<td class="cancel"><button>Cancel</button></td></tr>'); 
      row.find('.name').text(file.name); 
      row.find('.size').text(o.formatFileSize(file.size)); 
      if (file.error) { 
       row.find('.error').text(
        locale.fileupload.errors[file.error] || file.error 
       ); 
      } 
      rows = rows.add(row); 
     }); 
     return rows; 
    }, 
    downloadTemplate: function (o) { 
     var rows = $(); 
     $.each(o.files, function (index, file) { 
      var row = $('<tr class="template-download fade">' + 
       (file.error ? '<td></td><td class="name"></td>' + 
        '<td class="size"></td><td class="error" colspan="2"></td>' : 
         '<td class="preview"></td>' + 
          '<td class="name"><a></a></td>' + 
          '<td class="size"></td><td colspan="2"></td>' 
       ) + '<td class="delete"><button>Delete</button> ' + 
        '<input type="checkbox" name="delete" value="1"></td></tr>'); 
      row.find('.size').text(o.formatFileSize(file.size)); 
      if (file.error) { 
       row.find('.name').text(file.name); 
       row.find('.error').text(
        locale.fileupload.errors[file.error] || file.error 
       ); 
      } else { 
       row.find('.name a').text(file.name); 
       if (file.thumbnail_url) { 
        row.find('.preview').append('<a><img></a>') 
         .find('img').prop('src', file.thumbnail_url); 
        row.find('a').prop('rel', 'gallery'); 
       } 
       row.find('a').prop('href', file.url); 
       row.find('.delete button') 
        .attr('data-type', file.delete_type) 
        .attr('data-url', file.delete_url); 
      } 
      rows = rows.add(row); 
     }); 
     return rows; 
    } 
}); 

See their documentation. Это позволит вам генерировать HTML без использования синтаксиса Smarty.

+0

Спасибо, его хороший обход, если он работает – MZH

+0

Да, он отлично работает для меня – MZH

Смежные вопросы