首页 文章

当“// <![CDATA [”...“//]]>”用于包装html模板时,“//”...“//]]>”出现在JSF页面上

提问于
浏览
-1

我正在尝试在我的JSF网页上添加html5 drag 'n drop upload文件,因此我必须将此脚本添加到其中:

<script type="text/html" id="template-uploads">

  //<![CDATA[


      <div data-bind="visible: showTotalProgress()">
            <div>
                <span data-bind="text: uploadSpeedFormatted()"></span>
                <span data-bind="text: timeRemainingFormatted()" style="float: right;"></span>
            </div>
            <div class="uploadimage-totalprogress">
                <div class="uploadimage-totalprogressbar" style="width: 0%;" data-bind="style: { width: totalProgress() + '%' }"></div>
            </div>
        </div>
        <div data-bind="foreach: uploads">
            <div class="uploadimage-upload" data-bind="css: { 'uploadimage-uploadcompleted': uploadCompleted() }">
                <div class="uploadimage-fileinfo">
                    <strong data-bind="text: fileName"></strong>
                    <span data-bind="text: fileSizeFormated"></span>
                    <span class="uploadimage-progresspct" data-bind="visible: uploadProgress() < 100"><span data-bind="text: uploadSpeedFormatted()"></span></span>
                </div>
                <div class="uploadimage-progress">
                    <div class="uploadimage-progressbar" style="width: 0%;" data-bind="style: { width: uploadProgress() + '%' }"></div>
                </div>
            </div>
        </div>

    //]]>
    </script>

此脚本充当某些文件knockout.js所需的模板,这是所述html5插件的一部分,并且敲除引用模板需要id“template-uploads” . 如果我通过取出脚本标记来解包代码,我会收到此错误:

未捕获错误:无法找到带有ID模板上传的模板

所以我不能通过展开代码来解决这个问题 .

如果我取出CDATA标签,我在浏览器控制台上收到此错误:

与元素类型“span”关联的属性“data-bind”的值不得包含“<”字符 .

现在的问题是JSF页面呈现不需要的“//”...“//]]>”围绕脚本代码生成的组件的caracters,可以看到here

1 回答

  • 1

    该问题是由此数据绑定引起的:

    data-bind="visible: uploadProgress() < 100"
    

    要摆脱它,只需制作一个比较函数并替换<with it:

    var lt = function(v1, v2){
        return v1 < v2;
    }
    

    和:

    data-bind="visible: lt(uploadProgress(), 100)"
    

    现在你可以放弃该死的CDATA .

    您还可以在viewmodel中进行与 lt 函数相同的计算 .

相关问题