淘汰赛JS-带否定的可见绑定不起作用

Gow*_*ham 2 javascript knockout.js

我试图将可见数据绑定与否定结合使用,但似乎无法正常工作。我在stackoverflow中发现了几个问题,这些问题指定应将NOT绑定用作表达式。但就我而言,我只是使用length属性,所以我不确定如何使用表达式。这是我的例子

<div class="form-group" data-bind="visible:!users.length == 0">
<span>Some message here...</span
</div>

<div class="form-group" data-bind="visible:users.length > 0">
<span>User data grid here...</span
</div>
Run Code Online (Sandbox Code Playgroud)

Jos*_*osh 5

我猜users是一个observableArray,因此您应该这样做:

data-bind="visible:users().length !== 0"
Run Code Online (Sandbox Code Playgroud)

更好,更清晰的意图是在视图模型上创建一个计算属性,然后绑定到该属性:

showUsers = ko.computed(function(){

   return _this.users().length > 0;

});
Run Code Online (Sandbox Code Playgroud)

然后您的绑定变为:

data-bind="visible:showUsers"
Run Code Online (Sandbox Code Playgroud)

要么

data-bind="visible:!showUsers()"
Run Code Online (Sandbox Code Playgroud)

这是一个jsFiddle,显示了使用各种技术的完整示例