javascript - Knockout - 数据绑定(bind)覆盖 html 元素内的其他元素

标签 javascript knockout.js

我正在尝试制作一个带有类似推文的列表项的演示应用程序,但我遇到了问题。我有一个 h4 元素,我想将文本绑定(bind)到该元素,并且其中也有一些 span 元素,但只显示绑定(bind)的文本,而 h4 元素内的其他元素被覆盖。 这是我想做的有问题的部分:

problematic place

这就是我尝试通过 knockout 实现它的方式:

knockout problem

shole 项目应该如下所示:

tweet item

我尝试实现此类标题的模板的特定部分:

 <h4 class="media-heading" data-bind="text: name"><a><span>@</span><span data-bind="text: name"></span></a><span class="timeAgo">  4 minutes ago</span></h4>

摆弄我的应用程序: fiddle

由于我在模板中做错了,我的问题是 - 如何使用 knockout 来实现包含帐户名称和时间之前部分的标题?

最佳答案

text绑定(bind)会替换元素的所有内容。这意味着“嵌套”文本绑定(bind)没有意义。 (或文本绑定(bind)元素内的任何其他绑定(bind))。

要解决您的具体问题,您可以添加另一个 <span>在你的<h4>里面:

<h4>
  <span data-bind="text: name"></span>
  <a>
    <span>@</span>
    <span data-bind="text: name"></span>
  </a>
  <span class="timeAgo">4 minutes ago</span>
</h4>

就我个人而言,我会将其清理为:

<h4>
  <span data-bind="text: name"></span>
  <a data-bind="text: '@' + name()"></span>
  <span>4 minutes ago</span>
</h4>

或者,如果您不想要额外的<span> ,您可以使用 virtual binding :

<!--ko text: name--><!--/ko-->

关于javascript - Knockout - 数据绑定(bind)覆盖 html 元素内的其他元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44366205/

相关文章:

javascript - 当您在 Select 脚本中调用 Knockout 计算的 Var 时,如何定义它?

javascript - lambda 。 anyPass 使用结果而不是 bool 值

javascript - $ ("a").href 始终返回绝对 URL,即使 href 属性是相对的

javascript - 如何在使用 NodeJS 将推文存储到 MongoDB 之前更改推文流中字段的值

javascript - AngularJS 在 javascript 而不是 html 中应用过滤器

javascript - 将 Xcode 与 Javascript/Coffeescript 和 Titanium 一起使用?

javascript - 获取索引值时出现问题

javascript - 带有空值的 bootstrap Typeahead 问题的自定义 knockout 绑定(bind)

knockout.js - KnockoutJS - 更新文本框值的 ViewModel OnChange 而不是 OnBlur 选项

javascript - knockout 可观察到未受到约束