如何使用'&'如果条件与虚拟元素淘汰?

时间:2013-12-05 10:01:36

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

我想实现像

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

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

3 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

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

您的服务器应该发送

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

为了让浏览器创建一个注释节点,并使用正确的Knockout语法进行解析。使用像Curl这样的工具来验证它是否正确。

答案 2 :(得分:0)

使用函数::

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

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

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