javascript - 如何使用 jsonp 调用返回的数据在 Durandal 中呈现 View ?

标签 javascript api jsonp durandal

我在查看从 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/

相关文章:

jquery - 如何使用 django 和 JSONP 从我的其他网站加载内容?

javascript - 自动滚动在不同的情况下工作

javascript - 获取此数组模型的配对数据的最佳方法是什么?

visual-studio - VS2015 编译错误,Win API GetIscsiSessionList of Iscsidsc.h

javascript - 使用 JSON 文件和 Javascript

php - 数据库支持的输入字段的代理过滤器值

javascript - 无法让动画正常工作

javascript - 将 ComboBox 与 InlineEditBox 结合使用

api - API 和设备驱动程序之间的区别

python - 使用 Token 通过 Python 调用 API