Javascript 淘汰:以null开始observableArray

Javascript 淘汰:以null开始observableArray,javascript,knockout.js,Javascript,Knockout.js,似乎在淘汰赛3.2.0中,他们改变了耳环的行为。在淘汰赛2中,如果我做到了: var array = ko.observableArray(null) console.log(array()) 它将返回空值。敲除3.2.0时不会发生同样的情况,因为可观察数组而不是null被创建为空数组 这就是我的情况: <div> <div class="spinner" data-bind="visible: comments() == null"> <!-- ko for

似乎在淘汰赛3.2.0中,他们改变了耳环的行为。在淘汰赛2中,如果我做到了:

var array = ko.observableArray(null)
console.log(array())
它将返回空值。敲除3.2.0时不会发生同样的情况,因为可观察数组而不是null被创建为空数组

这就是我的情况:

<div>
 <div class="spinner" data-bind="visible: comments() == null">
 <!-- ko foreach: comments -->
 ...
 <!-- /ko -->
</div>

...
我想开始在comments div中显示一个微调器,在填充注释时,我将隐藏微调器并显示注释。我无法执行
data bind=“visible:comments().length==0”
,因为如果帖子没有注释,注释数组的长度将为0,并且微调器将永远显示

我怎样才能做到这一点呢?

这样就行了

self.comments = ko.observableArray([]);

<!-- ko if: comments().length > 0 -->
Greater than zero // Show spinner
<!-- /ko -->
<!-- ko ifnot: comments().length > 0 -->
No greater than zero // No spinner needed
<!-- /ko -->
self.comments=ko.observearray([]);
大于零//显示微调器
不大于零//不需要微调器

让我知道你的想法。

无论你使用什么来填充数组,都应该在完成后设置一个标志。这个问题已经“修复”了:而且如果你仍然想改变旧的行为,你可以在创建后显式地将ObservalArray设置为null:
var array=ko.ObservalArray(null);数组(空);console.log(array())
日志是否为空?是否使用ajax加载注释?我通常定义一个函数,比如
isLoading=function(show){$('.loading div').toggle(show)}
然后从我的加载函数调用
isLoading(true)
来启动微调器,并在
$.ajax()中始终调用(function(){isLoading(false)})
godmode问题在于,这将触发所有注释的加载div。每个帖子都有自己的评论div和自己的微调器