1

尝试将数组与表绑定,如果我有这个:

<table data-bind="foreach: Applicants, visible: Applicants().length > 0">
        <tr>
        <td>
        <p data-bind="text:FirstName() + ' ' + LastName()" />
        <img data-bind="attr:{src: URL}" width="100px" height="100px" alt="test" /></td>
        </tr>
</table>

不会生成 img 标签,只是从显示中省略。

必须有另一个<td>包装<img>来显示它。为什么?


好的,@Stokedout 是对的,在尝试使用</p>而不是使用封闭标签<p .... />之后,它可以工作。因此,如果标签可能具有价值但没有任何价值而关闭,那么淘汰赛将不适用于其余标签..

例子:

将起作用: -- 名字和姓氏都将显示。

      <p data-bind="text: FirstName"></p>
      <p data-bind="text: LastName"></p>

将不起作用:- 仅显示名字

      <p data-bind="text: FirstName"/>
      <p data-bind="text: LastName"/>

我不知道为什么!

4

2 回答 2

3

当你写:

<p data-bind="text:FirstName() + ' ' + LastName()" />
<img data-bind="attr:{src: URL}" width="100px" height="100px" alt="test" />

如果没有结束标签,img 将被视为段落的内容。对于自闭合的 P 元素,浏览器可以推断该段落在下一个段落的开头已经结束。

当您使用此绑定时:

data-bind="text:FirstName() + ' ' + LastName()" 

KO 将尝试为您的 P 元素设置文本并清除以前的内容。

解决方法很简单,只需添加一个结束标签:

<p data-bind="text:FirstName() + ' ' + LastName()"></p>
<img data-bind="attr:{src: URL}" width="100px" height="100px" alt="test" />
于 2013-01-11T03:50:30.097 回答
2

这是因为<p>元素必须具有完整的元素语法。

<p data-bind="text:FirstName() + ' ' + LastName()"></p>

没有它,HTML 变成:

<p data-bind="text:...">
    <img ... />
</p>

因此img成为p元素的内容并被text绑定覆盖。

于 2013-01-11T01:52:46.243 回答