【问题标题】:“//” …“ //]]>” appears on the JSF page when “ //<![CDATA[ ” …“//]]>” are used to wrap a html template当“ //<![CDATA[ ” ...“//]]>”用于包装html模板时,“//” ...“ //]]>”出现在JSF页面上
【发布时间】:2013-11-08 17:40:31
【问题描述】:

我正在尝试在我的 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 标记,我会在浏览器控制台上收到此错误:

与元素类型关联的属性“data-bind”的值 “span”不能包含“

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

【问题讨论】:

标签: jsf knockout.js cdata


【解决方案1】:

问题是由这个数据绑定引起的:

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

要摆脱它,只需做一个比较函数并将

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

和:

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

现在你可以删除该死的 CDATA。

您还可以在视图模型中进行计算,与 lt 函数执行相同的操作。

【讨论】:

  • 顺便说一句,我在同一页面上添加了您的 lt 功能,但在标题上。 CDATA 的问题只有在写在正文上时才会发生。
猜你喜欢
  • 2013-11-20
  • 2013-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-25
  • 2011-11-22
  • 2019-04-07
  • 1970-01-01
相关资源
最近更新 更多