我有以下问题。 我想检查表中点击的项目是否与model.selected不同。
var model= {
items: ko.observableArray(),
selected : ko.observable()
};
<tbody>
<!-- ko foreach: model.items -->
<tr data-bind="click:$parent.model.set_selected_item">
<td style="cursor:pointer" data-bind="varchar : title"></td>
</tr>
<!-- /ko -->
</tbody>
//ID is an observable
//selected may not be set yet - i.e an empty observable;
var set_selected_item = function(item){
//if item is different set
model.LandItem_selected(item);
do_routine(item)
//else
//do nothing
}
因为项是一个observable是永远不为null; 我该如何检查是否尚未设置observable?
任何帮助都非常感激。
答案 0 :(得分:6)
在比较之前展开observable
var item1 = ko.observable()
console.log(ko.utils.unwrapObservable(item1))
console.log(ko.utils.unwrapObservable(item1) == null)
item1(1)
console.log(ko.utils.unwrapObservable(item1) == null)
输出
未定义
真
假
答案 1 :(得分:2)
您可以使用括号来打开observable,如下所示:
var underlyingValue = item();
或者,如果您不确定该变量是否是可观察的,您可以使用此方法:
var underlyingValue = ko.utils.unwrapObservable(item);
基本上检查变量是否是可观察的,如果是,它首先使用括号进行检查。
当你拥有潜在价值时,你可以做你通常会做的事情。