如果声明不起作用,淘汰赛/淘汰赛......这令人困惑

时间:2014-01-02 16:31:19

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

新年快乐,我对knockoutjs if语句有以下问题。

我有以下

  z.object = ko.observableArray(ko.utils.arrayMap([{"Id":3,"Date":"2014"}]))

  <div data-bind="text: Date"></div>

以上打印正常,2014年但在if语句不起作用下面..发生了什么?

 <!-- ko if: Date === 2014 -->
 <!-- /ko -->

我对此感到非常困惑。

2 个答案:

答案 0 :(得分:1)

来自SO answer here

标识(===)运算符的行为与相等(==)运算符的行为相同,但不进行类型转换,并且类型必须相同才能被视为相等。

因此,在您的陈述Date === 2014中,此处Date为tring而2014为数字,则结果为false。

将字符串转换为数字,将数字转换为字符串或使用==代替===

答案 1 :(得分:0)

简化示例似乎对我来说==,但不是===,请看这个小提琴:

http://jsfiddle.net/cr2QT/2/

<div data-bind="text: Date"></div>

<hr>
<!-- ko if: Date == 2014 -->
<h1>Oogah Chaka (==)</h1>
<!-- /ko -->

<hr>
<!-- ko if: Date === 2014 -->
<h1>Chaka (===)</h1>
<!-- /ko -->

var viewModel = {
  Date: "2014"
}
ko.applyBindings(viewModel);