knockout.js - 比较 knockout 观察值的习惯用法

标签 knockout.js

我有以下问题。
我想检查表中单击的项目是否与 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 是否尚未设置?

非常感谢任何帮助。

最佳答案

在比较之前解开 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)

输出

不明确的

真的

错误的

关于knockout.js - 比较 knockout 观察值的习惯用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9840641/

相关文章:

javascript - 用新数据替换 observableArray

knockout.js - Kendo Typescript 定义不支持 'observableHierarchy'

javascript - 将多个 View 模型传递给组件 - 性能问题?

复选框勾选值绑定(bind)

javascript - 可观察数组中的项目未添加到列表 KO

drop-down-menu - knockout 选择属性 :{title Binding} not working as expected for Observable array

javascript - knockout.js 可以等到 onClick 才绑定(bind)吗?

javascript - 订阅循环中的属性 - KnockoutJs

google-maps - 在 knockoutjs 中订阅 observableArray 的最简单方法

javascript - 异步 knockout observableArray 选择选项加载