2014-02-20 24 views
0

我正在KnockoutJS中使用下面的case語句。Switch/Case語句不能根據數值填充單元格

<tbody data-bind="foreach: statusList"> 
    <tr> 
     <td class="col-sm-3" data-bind="text: CompanyName"></td> 
     <!-- ko switch: true --> 
      <!-- ko case: Status == '1' --> 
       <td class="glyphicon glyphicon-arrow-up col-sm-2"></td> 
      <!-- /ko --> 
      <!-- ko case: $else --> 
       <td class="glyphicon glyphicon-arrow-down col-sm-2"></td> 
      <!-- /ko --> 
     <!-- /ko --> 
     <td class="col-sm-7" data-bind="text: Message"></td> 
    </tr> 
</tbody> 

狀態可以是1或0,但無論怎樣我改變比較是我的細胞是全部向上箭頭或全部向下箭頭。我在這裏錯過了什麼?有沒有說一個更簡單的方法:

  • 如果狀態== 1只顯示一個向上的箭頭
  • 否則顯示向下箭頭

編輯:

<!-- ko if: Status() == '1' --> 
    <td class="glyphicon glyphicon-arrow-up col-sm-2"></td> 
<!-- /ko --> 
<!-- ko ifnot: Status() == '1' --> 
    <td class="glyphicon glyphicon-arrow-down col-sm-2"></td> 
<!-- /ko --> 

這也導致工作,但我不知道爲什麼當我說text: Status它會顯示1或0.

+1

你有沒有試過'<! - ko case:Status()=='1' - >'? – nemesv

+2

Knockout沒有開箱即裝即用的綁定,因此添加從中獲取的位置可能會有所幫助。無論哪種方式,我很確定'switch:true'不可能是正確的。另外,你是VM嗎?既然你只有兩種狀態,爲什麼不使用'if'和'ifnot'呢? –

+0

我試過,如果沒有,讓我給另一個去,我會編輯我的帖子。 Switch來自github上的一個庫。 –

回答

1

試試這個:

<tbody data-bind="foreach: statusList"> 
    <tr> 
     <td class="col-sm-3" data-bind="text: CompanyName"></td> 
     <!-- ko switch: true --> 
       <td data-bind="case.visible: Status() == '1'" class="glyphicon glyphicon-arrow-up col-sm-2"></td> 
       <td data-bind="case.visible: $else" class="glyphicon glyphicon-arrow-down col-sm-2"></td> 
     <!-- /ko --> 
     <td class="col-sm-7" data-bind="text: Message"></td> 
    </tr> 
</tbody> 
+0

這有效,在我的IDE中有語法錯誤,但沒有更少的工作就好了。我很高興有兩種方法來實現這個邏輯。 –