我在查看从 JSONP 调用 restful api 服务返回的数据时遇到问题。我正在使用 Durandal。我不确定它没有呈现是因为我使用了错误的数据绑定(bind),还是因为 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"
}
我不明白的是我应该如何连接(数据绑定(bind))到返回的数据。我已经尝试了所有我能想到的变化。 这是 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>
感谢任何反馈。
更新 所以我将 clients.js 更改为 that.clients.push(response.items); 在我的调试器中 客户:阵列[1] 0:未定义
最佳答案
不确定是否可以在初始化后替换数组。尝试使用 Knockout's pseudo-array functions 来推送
每个元素(不是原生的push
)。
您可能需要等待确认,我无法立即测试更新,但我肯定会像宣传的那样插入工作。
同样先使用本地数据进行测试,并在重新启用 JSON-P 功能后监控您的网络流量。
当我在做的时候;如果可以(无关)考虑 CORS。
关于javascript - 如何使用 jsonp 调用返回的数据在 Durandal 中呈现 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20474914/