【问题标题】:Knockout JS array empty or can't retrieve values?Knockout JS 数组为空或无法检索值?
【发布时间】:2014-10-23 11:58:20
【问题描述】:

我有一个从服务器检索 cmets 的 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 文档中没有显示任何内容,甚至没有显示数组长度为 0 的“Item”文本。 这里有什么问题?为什么我不能使用数组值?

谢谢。

【问题讨论】:

    标签: javascript jquery knockout.js


    【解决方案1】:

    您应该使用现有的 observable 数组(已绑定)而不是创建一个新数组:

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

    【讨论】:

    • 哦,nvm 误读了,直到我有 15 个代表我才能做到这一点。现在标记为答案。
    【解决方案2】:

    你设置了 observable 数组两次。在 Ajax 调用的开始和再次调用。一旦您构建了模型并应用了绑定,就无需再与 observables 混为一谈了。完成。将处理与模型相关的数据对象的任何更改。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多