5

我是车把和主干的新手,我目前正在尝试在我的网页上预编译车把模板。然而,我不知道是哪一个把手或主干在 DOM 中添加了一个空字符串。我不知道为什么。当我在主干视图中编译模板时,不会发生同样的事情。

对我来说更奇怪的是,我有一个预编译的车把模板,这不会发生......

这是预编译时的html图片:

在此处输入图像描述

这是在主干视图中编译时的图片:

在此处输入图像描述

有谁知道为什么会这样?

我试图通过仅编译不接受任何数据的最简单模板并查看文件中的问题来简化预编译的模板文件......我已经更改了返回字符串,但它没有解决问题,所以我认为问题必须在骨干内的某个地方......

简单的模板:

<div id="channelsContainer"></div>
<div>
    <div id="postsContainer"></div>
    <div>
        <div id="contentContainer"></div>
        <div id="detailsContainer"></div>
    </div>
</div>

从主干视图中的模板函数返回预编译的模板:

template:   function(data)
    {
        return Handlebars.templates['shell.html'];
    }

在视图中编译时返回模板:

template:   function(data)
        {
            var handlebarTemplate = Handlebars.compile('<div id="channelsContainer"></div> \
<div> \
    <div id="postsContainer"></div> \
    <div> \
        <div id="contentContainer"></div> \
        <div id="detailsContainer"></div> \
    </div> \
</div>');

            return handlebarTemplate;
        }

在同一个主干视图中,在初始化方法中:

this.$el.empty().html(this.template());

非常感谢您对找出正在发生的事情的任何帮助。

4

2 回答 2

1

我的同事找到了问题的答案......他只是用没有 BOM 编码的 UTF-8 保存了文件......资源: 没有 BOM 的 UTF-8

似乎 Visual Studio 使用不适当的编码保存文件......

谢谢你们的支持。

于 2013-02-16T00:14:08.803 回答
0

我只能猜测,但我的一个模板也有类似的问题。就我而言,内联模板是解析为 DOM 节点的字符串,而不是解析为 DOM 节点的 XML。结果,任何错误的空格在解析后都被转换为 TEXT 元素,当模板被调用时,它们正在进入 DOM 中。

于 2013-02-14T09:39:12.443 回答