2015-06-29 38 views
0

我試圖顯示字符串「找不到數據」。在數據數組爲空的情況下,在表格行內部,但似乎無論如何總是打印該消息。如果在knockout.js中的語句不按預期工作

Reproduction online(忽略條件orders.length ==0

我在做什麼錯?

<table> 
    <thead> 
     <tr> 
      <th>Truck</th> 
      <th>Pickup</th> 
     </tr> 
    </thead> 
    <!-- ko if: orders.length==2 --> 
    <tbody> 
     <tr colspan="2">No data was found.</tr> 
    </tbody> 
    <!-- /ko --> 
    <tbody data-bind="foreach: orders"> 
     <tr> 
      <td data-bind="text: truck"></td> 
      <td></td> 
     </tr> 
    </tbody> 
</table> 

回答

2

如果您ordersko.observableArray你需要寫orders()讓底層陣列,並從那裏長度:

<!-- ko if: orders().length== 0 --> 

你的HTML也無效,td元素從丟失:

<!-- ko if: orders().length==0 --> 
    <tbody data-bind="if: orders().length==0"> 
     <tr colspan="2"><td>No data was found.</td></tr> 
    </tbody> 
<!-- /ko --> 

演示JSFiddle

+0

我改變了它,但它不是我所期望的。似乎是做相反的:http://jsfiddle.net/fxhkszmx/6/ – Alvaro

+0

@Alvaro你的小提琴有幾個問題。 「沒有數據被發現」不在'​​'中,因此最終出現在錯誤的地方,並且你的數據分配不正確 - 它應該是'self.orders(data);' - 不需要'=' '。 [看這個版本](http://jsfiddle.net/fxhkszmx/8/) –

+0

感謝您指出我的錯誤!我會在3分鐘內接受答案。 – Alvaro