数据绑定如果显示div knockout js

时间:2016-04-21 13:48:52

标签: knockout.js

所以我试图显示一些div,它们基本上显示了不同颜色的盒子,具体取决于它们的数字,基本上AA和B都返回5,所以它们应该显示,其他div应该是空白或空的,基本上不均匀显示div,但由于某种原因,现在所有数据绑定都没有显示任何东西,我得到空div。

                    <div>
                        <div class="riskBox1PushUp col-md-6 col-lg-4 col-sm-6 col-xs-12">
                            <div data-bind="if : AAA  > 0">    
                                <span class="riskBox1">AAA</span> <span data-bind="text : AAA"></span>
                            </div>
                        </div>

                        <div class="riskBox2PushUp col-md-6 col-lg-4 col-sm-6 col-xs-12">
                            <div data-bind="if : AA  > 0.00">  
                                <span class="riskBox2">AA</span> <span data-bind="text : AA"></span>
                            </div>
                        </div>

                        <div class="riskBox3PushUp col-md-6 col-lg-4 col-sm-6 col-xs-12">
                            <div data-bind="if : A  > 0.00">
                                <span class="riskBox3">A</span> <span data-bind="text : A"></span>
                            </div>    
                        </div>

                        <div class="riskBox2PushUp col-md-6 col-lg-4 col-sm-6 col-xs-12">
                            <div data-bind="if : B > 0.00">
                                 <span class="riskBox4">B</span> <span data-bind="text : B"></span>
                            </div>
                        </div>

                        <div class="riskBox2PushUp col-md-6 col-lg-4 col-sm-6 col-xs-12">
                            <div data-bind="if : C  > 0.00">
                                 <span class="riskBox5">C</span> <span data-bind="text : C"></span>
                            </div>
                        </div>
                        <div class="riskBox2PushUp col-md-6 col-lg-4 col-sm-6 col-xs-12">
                            <span class="riskBox6">Not invested</span> <span data-bind="text : TotalInvestment"></span>
                        </div>
                    </div>

不确定这是否重要,但AAA和AA等都是ko计算的。 如果我使用AA或AAA,这是图像 enter image description here

4 个答案:

答案 0 :(得分:1)

我也几次遇到同样的问题。之后我总是尝试在评论或可见绑定中使用if:

例如:

<div class="riskBox1PushUp col-md-6 col-lg-4 col-sm-6 col-xs-12">
                            <!--ko if : AAA  > 0 -->    
                                <span class="riskBox1">AAA</span> <span data-bind="text : AAA"></span>
                            <!--/ko-->
                        </div>

或可见度:

<div class="riskBox1PushUp col-md-6 col-lg-4 col-sm-6 col-xs-12">
                            <!--ko visible: AAA  > 0 -->    
                                <span class="riskBox1">AAA</span> <span data-bind="text : AAA"></span>
                            <!--/ko-->
                        </div>

如果上述方法失败,那么我建议您重新检查一下您的变量,因为没有正当理由说明它不起作用。

答案 1 :(得分:1)

当您根据条件评估观察值时,您需要执行以下操作:

data-bind="if: AAA() > 0"

而不是

data-bind="if : AAA  > 0"

同样适用于其他if

答案 2 :(得分:1)

当您在敲除绑定中创建包含可观察对象的表达式时,您需要自己评估 observable。

I.e。:您需要以下列形式编写数据绑定:data-bind="if: AAA() > 0"

<强>解释

Knockout将您在绑定中输入的值包装在函数中。 AAA中的if: AAA变为function() { return AAA; }。如果此函数返回observable实例,它将评估observable的值并订阅更改。

当你在你的绑定中创建一个表达式时,包装函数中可能存在的observable会丢失:function() { return AAA > 0; }将比较你的可观察实例到值0.这将只返回false,无论可观察值是多少。

答案 3 :(得分:0)

试试这个

data-bind="visible: AAA() > 0"