注释中的条件运算符floatval

时间:2013-08-30 11:49:08

标签: javascript if-statement knockout.js operators

我试图创建一个条件语句,根据observableArray的属性内的floatval值呈现一个元素我迭代

当我渲染值本身时,它可以工作:

<span data-bind="text: stinger.points"></span>

对于observableArray中的每一个,我都会看到正确的值,例如&#34; 3.2&#34;。

继承我的实际陈述,但没有一个显示在计算的html中:

<!-- ko if: stinger.points  >1.49 && stinger.points <2.49 -->
    <div>1.5 - 2.48</div>       
<!-- /ko -->            
<!-- ko if: stinger.points  >2.49 && stinger.points <3.49 -->
    <div>2.5 - 3.48</div>
<!-- /ko -->    
<!-- ko if: stinger.points  >3.49 && stinger.points <4.49 -->
    <div>3.5 - 4.48</div>
<!-- /ko -->
<!-- ko if: stinger.points  >4.49 && stinger.points <5.1 -->
    <div>4.5 - 5</div>      
<!-- /ko -->
<!-- ko if: stinger.points  <0.1  -->
    <div >0</div>           
<!-- /ko -->

或者我可以像这样接近它:

<div data-bind="visible: rating.points > 1.2 && rating.points < 3.4">between 1.3 - 3.5</div>

然而,这也不起作用,如上所述。

我做错了什么?如何纠正这个?

1 个答案:

答案 0 :(得分:2)

在表达式中使用observable时,必须通过添加()来解包它。更新您的代码如下:

<!-- ko if: stinger.points()  >1.49 && stinger.points() <2.49 -->
    <div>1.5 - 2.48</div>       
<!-- /ko -->            
<!-- ko if: stinger.points()  >2.49 && stinger.points() <3.49 -->
    <div>2.5 - 3.48</div>
<!-- /ko -->    
<!-- ko if: stinger.points()  >3.49 && stinger.points() <4.49 -->
    <div>3.5 - 4.48</div>
<!-- /ko -->
<!-- ko if: stinger.points()  >4.49 && stinger.points() <5.1 -->
    <div>4.5 - 5</div>      
<!-- /ko -->
<!-- ko if: stinger.points()  <0.1  -->
    <div >0</div>           
<!-- /ko -->