Knockout JS数组为空或可以't检索值

Knockout JS array empty or can't retrieve values?

本文关键字:检索 数组 JS Knockout      更新时间:2023-09-26

我有一个Javascript ajax函数,可以从服务器检索评论(注意:我是Knockout JS的新手):

function Comments() {
var self = this;
self.commentArray = ko.observableArray();
self.getNewerComments = function(lastCommentId) {
    pageId = $('body').attr('id');
    $.ajax({
        type: "GET",
        dataType: "json",
        url: "Controller/getNewerComments/" + pageId + "/" + lastCommentId,

    })
            .done(function(data) {
                self.commentArray = ko.observableArray(data);
                alert(self.commentArray[0].authorName);

            })
}
}

通过警报,我可以看到该值确实设置在那里,在我的JS文件的开头,我有以下代码:

var comments = new Comments();
ko.applyBindings(comments);
comments.getNewerComments(0);

在html文件中:

<!-- ko foreach: commentArray -->
<li>Item <span data-bind="text: $index"></span></li>
<!-- /ko -->
</div>

但是,html文档中没有显示任何内容,甚至"Item"文本也没有显示,这表明数组的长度为0。这里有什么问题?为什么我不能使用数组值

谢谢。

您应该使用现有的可观察数组(已绑定),而不是创建新的数组:

.done(function(data) {
   self.commentArray(data);
   alert(self.commentArray[0].authorName);
 })

您设置了两次可观察数组。在开始和Ajax调用时。一旦您构建了模型并应用了绑定,就不需要再麻烦可观测性了。它完成了。将处理对绑定到模型的数据对象的任何更改。