Javascript 我如何通过索引在淘汰表中访问对象?无法处理绑定

Javascript 我如何通过索引在淘汰表中访问对象?无法处理绑定,javascript,jquery,json,knockout.js,Javascript,Jquery,Json,Knockout.js,我对stackoverflow和knockout是一个全新的人,我有一个问题。我想通过索引访问JSON对象。如果我在代码中添加虚拟数据,它可以正常工作,但如果我从JSON添加数据并停止,它会给我一个错误 错误 未捕获类型错误:无法处理绑定“text:function(){return Ads()[0].AdContent}”消息:无法读取未定义的属性“AdContent” 我的ViewModel: function AdListModel () { var self = this;

我对stackoverflow和knockout是一个全新的人,我有一个问题。我想通过索引访问JSON对象。如果我在代码中添加虚拟数据,它可以正常工作,但如果我从JSON添加数据并停止,它会给我一个错误

错误 未捕获类型错误:无法处理绑定“text:function(){return Ads()[0].AdContent}”消息:无法读取未定义的属性“AdContent”

我的ViewModel:

function AdListModel () {
    var self = this;
    self.Ads = ko.observableArray([]);
    $.ajax({
        type: "GET",
        url: '/Home/GetAllAds',
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (data) {
            self.Ads(data); 
        },
        error: function (err) {
            alert(err.status + " : " + err.statusText);
        }
    });
}

ko.applyBindings(new AdListModel());
我收到的JSON

[{"AdId":6,"AdContent":"sadasdasdsad","CategoryId":1,"CategoryNameRU":"Дом, стройка, ремонт"},{"AdId":12,"AdContent":"asdasd","CategoryId":1,"CategoryNameRU":"Дом, стройка, ремонт"}]
我的HTML

   <div data-bind="text: Ads()[0].AdContent"></div>

   <div data-bind="foreach: Ads">   
      <p data-bind="text: AdId"></p>
      <p data-bind="text: AdContent"></p>
      <p data-bind="text: CategoryId"></p>
      <p data-bind="text: CategoryNameRU"></p>
   </div>

因此,基本上我只想读取索引为0的JSON对象中的一个属性,然后显示所有数组。

在ajax调用没有响应之前,“Ads”数组是空的。因此“Ads()[0]”未定义

您可以在绑定中使用附加检查:

<!-- ko if: Ads().length > 0 -->
<div data-bind="text: Ads()[0].AdContent"></div>
<!-- /ko -->

注意:“foreach”绑定正确处理空数组