【问题标题】:How to use '&' in if condition with in Virtual element knockout?如何在虚拟元素淘汰赛的if条件下使用'&'?
【发布时间】:2013-12-22 04:59:59
【问题描述】:

我想实现像

这样的虚拟元素
<!-- ko if:  $index() > 9 && $index() < 20 -->

但它没有执行。 请帮帮我。

【问题讨论】:

  • 你能在你的 foreach 和一些 viewmodel 周围发布更多代码吗?最好还是在 jsfiddle.net 上复制这个问题

标签: knockout.js knockout-2.0 knockout-mapping-plugin knockout-validation knockout-mvc


【解决方案1】:

看看这个:http://jsfiddle.net/y3KV2/

你有什么工作,但可能是你错过了其他东西,所以我做了这个简单的小例子,以便你了解它是如何工作的。

<div data-bind="foreach: data"> 
    <!-- ko if: $index() > 9 && $index() < 20  -->
        test <span data-bind="text: $index()"></span> 
    <!-- /ko -->
</div>


var vm = function () {
    var self = this;
    self.data = ko.observableArray([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24]);
}

var s = new vm();

ko.applyBindings(s);

【讨论】:

  • 您好,Armand 感谢您的建议。我这边很抱歉。但是在这里我正在动态推送与我的cshtml页面中相同的HTML代码,然后我的foreach不起作用。如果您知道如何在动态 HTML 上应用淘汰赛,请告诉我这对我很有帮助,谢谢..
  • 我已尝试使用您给定的 SO 链接。但它不起作用。请帮助我。
【解决方案2】:

使用您的 DOM 检查器确保您的虚拟元素的注释节点实际上包含 & 符号;问题可能是应该被 HTML 转义的东西不是,或者已经被 HTML 转义的东西被双重转义。

你的服务器应该发送出去

<!-- ko if:  $index() > 9 &amp;&amp; $index() < 20 -->

为了让浏览器创建一个具有正确语法的注释节点以供 Knockout 解析。使用 Curl 之类的工具来验证它是否存在。

【讨论】:

  • 您好 ebohlman 感谢您的建议。我这边很抱歉。但是在这里我正在推送 HTML 代码,就像上面通过 armand 的代码在页面中动态回复的一样,然后我的 foreach 不起作用。如果您知道如何在动态 HTML 上应用淘汰赛,请告诉我这对我很有帮助,谢谢..
【解决方案3】:

使用函数 ::

<!-- ko if: function() { myIndicesLoveMe($index) } -->

然后将函数放在某个地方并确保它返回 True 或 False ::

myIndicesLoveMe = function(index) {
    return (index > 9 && index < 20);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-18
    • 1970-01-01
    • 2012-04-20
    • 2013-07-31
    • 1970-01-01
    • 2015-06-11
    相关资源
    最近更新 更多