我想比较一个值是否“不可用”javascript

时间:2015-01-27 13:49:35

标签: javascript knockout.js

我正在使用淘汰赛,我想比较一个值是否不可用。在JavaScript /淘汰赛中有没有办法可以做到这一点?

<!-- ko if: User().details()[0] != undefined -->
       <p>Your defined</p>
<!--/ko-->

我尝试了undefined,但这不起作用。有人知道我能比较什么,所以检查价值是否不可用?

2 个答案:

答案 0 :(得分:1)

您需要将typeof值与'undefined'进行比较。例如:

<!-- ko if: typeof User().details()[0] !== 'undefined' -->
       <p>Your defined</p>
<!--/ko-->

请参阅MDN documentation for this type of check

这个片段说明了这一点:

&#13;
&#13;
var x = {
  y: 50
};

document.getElementById('output').innerHTML = 'x.y is undefined: ' + (typeof x.y === 'undefined') + '; x.z is undefined: ' + (typeof x.z === 'undefined');
&#13;
<div id="output"></div>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

而不是检查天气是不确定的,如果你处于两难境地,请始终使用with(在你的场景中没有容器),这样可以达到目的。

查看:

<!-- ko with:$data.User1 --> 
       <p data-bind="text:$data">  defined</p>
<!--/ko-->

<!-- ko if:$data.User -->
       <p>Your defined</p>
<!--/ko-->

查看型号:

 var viewModel = {
 User: ko.observable('charlie')
 };
 ko.applyBindings(viewModel);

在视图中你可以看到我故意使用with:user1仍然你的代码不会破坏它只是停止向下看。如果您为if尝试相同的操作,则会出现未定义的错误。

如果你真的想继续使用if,那么尝试使用一个计算机并根据你施加的条件返回true / false。使视图更清洁

正在使用 sample fiddle