如何使用jsonp调用返回的数据在Durandal中呈现视图?

时间:2013-12-09 15:58:10

标签: javascript api jsonp durandal

我无法查看从JSONP调用返回到restful api服务的数据。我正在使用Durandal。我不确定它是否没有呈现,因为我使用了错误的数据绑定,或者是因为jsonp或者是否是其他原因。

这就是我在clients.js文件中的内容:

define(['plugins/http', 'durandal/app', 'knockout'], function (http, app, ko) {
return {
        displayName: 'Clients',
        clients: ko.observableArray([]),
        activate: function () {
            var that = this;

            return http.jsonp('http://site/api/clients/1', 'jsoncallback').then(function (response) {
                that.clients(response.items);
            });

        }
    };
}); 

返回的数据如下所示:

{
Id: 1,
Company: "Exosis",
email: "alisasandoval@exosis.com",
phone: "+1 (824) 431-2547",
address: "234 Ruby Street, Beechmont, Connecticut, 5450",
about: "Consectetur dolore excepteur ex sit nostrud.Voluptate tempor dolore minim do aliqua duis consequat nostrud amet. Nisi consequat eu Lorem ipsum.",
clientStartDate: "1990-09-18",
isActive: true,
clientType: "multiple"
}

我不明白的是我应该如何连接(数据绑定)到返回的数据。我尝试了所有我能想到的变化。 这是clients.hmtl文件:

<body> 
    <section>
        <h2 data-bind="text: displayName"></h2>
        <div data-bind="foreach: clients">
                <div data-bind="text: Id"></div>
                <div data-bind="text: Company"> </div>
        </div>

    </section>
</body>

感谢您的反馈。

UPDATE 所以我把clients.js改成了     that.clients.push(response.items); 在我的调试器中 客户:数组[1] 0:未定义

1 个答案:

答案 0 :(得分:1)

不确定在初始化后可以替换阵列。使用Knockout's pseudo-array functions(不是原生push)尝试push每个元素。

您可能需要等待确认,我无法立即测试替换,但我很乐意推广广告宣传的作品。

首先使用本地数据进行测试,并在重新启用JSON-P功能后监控网络流量。

而我正在接受它;如果可以,请考虑CORS(无关)。