【问题标题】:Containerless control flow not working无容器控制流不起作用
【发布时间】:2014-05-29 20:35:20
【问题描述】:

任何想法为什么这对我不起作用?我正在使用淘汰赛 2.3。

<!-- ko if: vendorName() -->
  <div>
    <label for="vendorName" class="form-label bold">Name:</label>
    <input name="vendorName" id="vendorName" type="text" class="" style="">
  </div>
<!-- /ko -->

这是视图模型

function SearchFieldViewModel() {
    var self = this;
    self.vendorName = ko.observable(false)
};

我尝试添加$root$parent。我试过vendorName(),只是vendorName。没有任何效果。如果我在 div 上使用标准数据绑定,那效果很好。我只是无法让无容器语法工作,我更喜欢使用它,因为我希望 div 消失,而不仅仅是 div 里面的东西。

【问题讨论】:

  • id="vendorName 之后缺少",否则您的代码工作正常:jsfiddle.net/vbSg7
  • vendorName后面的括号也需要去掉。
  • nemesv,对不起。那只是一个错字。我已经用直接复制和粘贴更新了代码。乔治,正如我在描述中提到的,我确实尝试了带括号和不带括号。两者都不起作用。
  • The code posted works just fine。请编辑您的问题并更新代码,以便重现问题。
  • 您是否有机会从移动浏览器中看到这些问题?我相信一些蜂窝网络会去除 HTML cmets 以减少流量。您能否验证出现问题的客户端中是否存在 cmets?

标签: knockout.js


【解决方案1】:

上述 cmets 中的建议似乎可以为您解决此问题

<!-- ko if: vendorName -->
  <div>
    <label for="vendorName" class="form-label bold">Name:</label>
    <input type="text" name="vendorName" id="vendorName" data-bind="Name"/>
  </div>
<!-- /ko -->


function SearchFieldViewModel() {
    var self = this;
    self.vendorName = ko.observable(false);    
};

ko.applyBindings(new SearchFieldViewModel());

JSFiddle:http://jsfiddle.net/Pe9Kz/

【讨论】:

    【解决方案2】:

    正如帕特里克斯蒂尔建议的那样,cmets 正在被剥离。但不是通过浏览器,而是通过 JSF。使用这个有效:

    <h:outputText value="&lt;!--" escape="false" /> ko if: vendorName <h:outputText value="--&gt;" escape="false" />
    ....
    ....
    <h:outputText value="&lt;!--" escape="false" /> /ko <h:outputText value="--&gt;" escape="false" />
    

    【讨论】:

      猜你喜欢
      • 2013-09-25
      • 2019-07-02
      • 1970-01-01
      • 2013-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-15
      相关资源
      最近更新 更多