带有多米诺骨牌视图的getJSON - 不返回任何数据

时间:2015-12-04 10:43:02

标签: json knockout.js lotus-domino

我正在开发一个基于@TheoHeselmans演示文稿的应用程序,使用Knockoutjs来启用Domino应用程序。

我被困在一点。

我正在尝试使用以下代码在网页上显示Domino视图

    self.mainclient.subscribe(function(newValue) {
        $.getJSON('../api/data/collections/name/json', function(data) {
        var mappedClients = $.map(data, function(item) { return new ClientRow(item); });
        self.renewals(mappedClients);
        });
    }
);

function ClientRow(data) {
    this.Status = ko.observable(data.Status);
}

它不返回任何数据 - 或显示错误,但我在Domino控制台上看到servlet已启动。

我按如下方式设置可观察元素:

self.renewals = ko.observableArray([]);
self.allclients = [{clientName: "ACME COMPANY"},{clientName: "GG Inc"}];
self.mainclient = ko.observable('');

通过从下拉列表中选择mainclient来设置它:

<select class="form-control" id="MainClient" data-bind="options: $root.allclients, value: mainclient, optionsText: 'clientName'">
</select>

最后,模板变量设置为:

 <!-- Knockout JavaScript (+ mapping plug-in and bootbox lib)
================================================== -->
<script src="[DB]js/knockout-3.2.0.js"></script>
<script src="[DB]js/knockout.mapping-latest.js"></script>
<script src="[DB]js/bootbox.min.js"></script>

<!-- Templates -->

<script type="text/html" id="renewal-template">
          <tr>
            <td data-bind="text: Status" /></td>
 </tr>
</script>

<script src="[DB]pages/ko_renewals.js"></script>

以及将其称为:

的HTML
<table class="table table-striped table-condensed"><tr class="warning"><th>Status</th></tr>
<tbody data-bind="template: { name: renewal-template', foreach: renewals }">
</tbody>
</table>
<pre data-bind="text: ko.toJSON($data, null, 2)"></pre>

<pre>元素不返回任何内容 - 即使它放在<table><tbody>内。如果放在<select>元素内,它会返回值。

我想要显示的视图是

json view

对我所遗漏的任何帮助都将不胜感激。

由于

格雷姆

1 个答案:

答案 0 :(得分:0)

排序。

function Renewal(data) {
    this.Country = ko.observable(data.Country);
    this.Status = ko.observable(data.Status);
    this.updatelink = data['@link'] || '';
}

function AppViewModel() {
   var self = this;

   //create empty observable Array
   self.renewals = ko.observableArray([]);
   self.allclients = ko.observableArray([]);
   self.mainclient = ko.observable('');


   //Get list of Countries
   $.getJSON('../api/data/collections/name/(lookupclient)', function(data) {
        self.allclients(data[0].Client);
        self.mainclient(self.allclients[0]);
        }
   );

   //trigger an AJAX request to get tastings when the main country selection changes
   self.mainclient.subscribe(function(newValue) {
        $.getJSON('../api/data/collections/name/json?count=5&keys=' + newValue, function(data) {
        var mappedRenewals = $.map(data, function(item) { return new Renewal(item); });
        self.renewals(mappedRenewals);
        });
    });


}

ko.applyBindings(new AppViewModel());

var vm = ko.dataFor(document.body); //for debugging