针对JSON的Knockout foreach数据绑定不返回任何值

时间:2013-10-21 00:13:06

标签: json knockout.js asp.net-web-api

我正在使用带有Knockout的web api开发简单的网页。我想显示Json结构的数据列表。

    function OrganisationViewModel() {
         var self = this;
         self.Organisations = ko.observableArray();

         var baseUri = '@ViewBag.ApiUrl';
         $.getJSON(baseUri, self.Organisations);


     }
     $(document).ready(function () {
         ko.applyBindings(new OrganisationViewModel());

     })

上面的代码是获取JSON并将其设置为Observable数组。

<div>
    <ul id="update-Org" data-bind="foreach: Organisations">
        <li>
            <div>
                <span data-bind:"text: $data.Name"></span>
            </div>
            <div>
                <span data-bind:"value: $data.PhoneNumber"></span>
            </div>
        </li>
    </ul>
</div>

上面是用于打印JSON数据的HTML。 输出只返回4个点。这意味着它知道我在数组中有4个项目。 我很确定它不是关于空的JSON数据,因为我得到了以下JSON数据。

0: {$id:1, Contacts:[{$id:2, Organisation:{$ref:1}, Id:1, ContactName:bg1, OrganisationId:1},…],…}
$id: "1"
Contacts: [{$id:2, Organisation:{$ref:1}, Id:1, ContactName:bg1, OrganisationId:1},…]
0: {$id:2, Organisation:{$ref:1}, Id:1, ContactName:bg1, OrganisationId:1}
1: {$id:3, Organisation:{$ref:1}, Id:2, ContactName:bg2, OrganisationId:1}
2: {$id:4, Organisation:{$ref:1}, Id:3, ContactName:bg3, OrganisationId:1}
Devices: []
Id: 1
Licenses: []
Name: "Aug1"
PhoneNumber: "021"
1: {$id:5, Contacts:[], Licenses:[], Devices:[], Id:2, Name:Aug2, PhoneNumber:02111}
$id: "5"
Contacts: []
Devices: []
Id: 2
Licenses: []
Name: "Aug2"
PhoneNumber: "02111"
2: {$id:6, Contacts:[], Licenses:[], Devices:[], Id:3, Name:Aug3, PhoneNumber:0211333}
$id: "6"
Contacts: []
Devices: []
Id: 3
Licenses: []
Name: "Aug3"
PhoneNumber: "0211333"
.....

1 个答案:

答案 0 :(得分:0)

尝试用以下代码替换你的getJSON:

$.getJSON(baseUri, function( data ) {
    self.Organisations(data);
});

我怀疑你当前的getJSON函数用普通数组覆盖你的observableArray。