Knockout.js与服务器端模板引擎混合出现异常行为

时间:2018-08-14 09:03:31

标签: knockout.js twirl

我在客户端使用Knockoutjs和服务器端模板引擎(即Twirl)。 我正在处理的代码如下所示(*简化)

<div id="outer">
  @if(some condition) {
    <ul class="type-a">
      <li>item1</li>
      :
  } else {
    <ul class="type-b">
     <li>item2</li>
      :
  }
  @if(another condition) {
    <-- ko if: isAlwaysFalse -->
      <li>item3</li>
    <-- /ko -->
  }
  <-- ko if: isAlwaysFalse -->
    <li>item4</li>
  <-- /ko -->
  </ul>
</div>

我要这样做的是从其父项(item3元素)中删除(隐藏)item4ul,但是呈现的HTML最终如下所示假设为some condition === trueanother condition === true

<div id="outer">
  <ul class="type-a">
    <-- ko if: isAlwaysFalse -->
    <-- /ko -->
    <-- ko if: isAlwaysFalse -->
    <-- /ko -->
    <li>item1</li>
    <li>item3</li>
    <li>item4</li>
  </ul>
</div>

如果条件不生效并且为什么移至父元素ul的正下方,为什么会剔除?

1 个答案:

答案 0 :(得分:0)

您错过了添加正确的敲除js虚拟元素语法的操作。

http://knockoutjs.com/documentation/custom-bindings-for-virtual-elements.html