如何在knockout.js中检查一个值是NULL还是未定义?

9
假设在这个例子中,firstName 没有设置值,而 lastName 被赋了一个值。如何检查该值是否被赋予。
function AppViewModel() {
    this.firstName = ko.observable();
    this.lastName = ko.observable('Smith');
}

哪种方法是最好的?这些方案能行吗?
   if(lastName  == '')
       //do something

或者

   if(lastName)
       //do something

或者

   if(lastName  == null)
       //do something

请帮忙。


1
我经常希望能有一个舒适的解决方案来解决这个问题。目前似乎你总是必须用另一个使用“if:myObservable”的div来封装元素。虽然Suchits下面的答案仍然会抛出错误,但如果它可以这样工作就太好了。 - Rob
2
只需使用 if (lastName())。ko.observable() 会给你一个函数,lastName() 是获取器,而 lastName(newLastName) 则是设置器。 - user1375096
2个回答

9
我知道OP的问题/示例是关于JavaScript的,但我因为标题而遇到了这个问题:
如何在knockout.js中检查一个值是否为NULL或未分配?
这也可以在视图中非常简单地进行检查: (示例来自Knockout的示例代码here):
<div data-bind="if: capital">
      Capital: <b data-bind="text: capital.cityName"> </b>
 </div>

在这个例子中,有一个叫做capital的对象,并且if语句默认检查null。如果Capital不为null,则执行第二行,否则跳过它。这对于简单情况非常有效。

7
你可以这样检查:

你需要使用以下命令:

if(lastName  != undefined  && lastName().length > 0 ){

// do something else.
}

编辑:您需要将lastName作为函数调用,因为它是一个可观察对象,以读取其当前值。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接