无法在 EmberJS 的模板中获取外部 JSON 数据

Unable to Get External JSON data in template in EmberJS

我已经搜索过这个主题并尝试了多种方法,但到目前为止都无法解决我的问题,所以我创建了一个帐户以便学习:)

我正在学习 EmberJS,但我无法从 EmberJS 中的路由获取 JSON 数据以输出到实际模板。但是,路线中的 Javascript 警报会显示数据。

我正在呼叫第三方 API,后者通过 http 从外部获取域的 WHOIS 信息。

示例JSON输出

{
  "status": [
    "clientTransferProhibited https:\/\/icann.org\/epp#clientTransferProhibited"
  ],
  "updated_date": [
    "2012-12-04T00:00:00"
  ],
  "contacts": {
    "admin": null,
    "tech": null,
    "registrant": null,
    "billing": null
  },
  "nameservers": [
    "adns1.apple.com",
    "adns2.apple.com",
    "nserver.apple.com",
    "nserver2.apple.com",
    "nserver3.apple.com",
    "nserver4.apple.com",
    "nserver5.apple.com",
    "nserver6.apple.com"
  ],
  "expiration_date": [
    "2021-02-20T00:00:00"
  ],
  "creation_date": [
    "1987-02-19T00:00:00"
  ],
  "raw": [
    "\n   Domain Name: APPLE.COM\n   Registrar: CSC CORPORATE DOMAINS, INC.\n   Sponsoring Registrar IANA ID: 299\n   Whois Server: whois.corporatedomains.com\n   Referral URL: http:\/\/www.cscglobal.com\/global\/web\/csc\/digital-brand-services.html\n   Name Server: ADNS1.APPLE.COM\n   Name Server: ADNS2.APPLE.COM\n   Name Server: NSERVER.APPLE.COM\n   Name Server: NSERVER2.APPLE.COM\n   Name Server: NSERVER3.APPLE.COM\n   Name Server: NSERVER4.APPLE.COM\n   Name Server: NSERVER5.APPLE.COM\n   Name Server: NSERVER6.APPLE.COM\n   Status: clientTransferProhibited https:\/\/icann.org\/epp#clientTransferProhibited\n   Updated Date: 04-dec-2012\n   Creation Date: 19-feb-1987\n   Expiration Date: 20-feb-2021"
  ],
  "whois_server": [
    "whois.corporatedomains.com"
  ],
  "registrar": [
    "CSC Corporate Domains, INC."
  ]
}

这是我的代码。

routes/file.js

import Ember from 'ember';

export default Ember.Route.extend({
  titleToken: "MyTitle",
  model() {
      $.ajax({
        type: "GET",
        url: "https://api.who.pm/apple.com",
        dataType: "json",
        success: function(jsonData) {
          alert(JSON.stringify(jsonData));
          return jsonData;
        },
        error: function(request, status, error) {
          console.log("Error! " + request.responseText);
        }
      });
      }
});

在我的 templates/file.hbs 中,我尝试了多种方法来获得 jsonData 输出,但都没有成功。我尝试了 {{model}}{{model.data}} 和其他一些方法。现在我只是想在模板中获取数据输出。

页面为 运行 时警报成功启动。

如有任何帮助,我们将不胜感激。 谢谢

模型挂钩应该return一个承诺或实际数据,你return什么都没有。

return jsonData return 是成功函数,不是模型挂钩。在调用成功挂钩时,模型挂钩已经 returned.

我强烈建议您自行了解 javascript 函数、回调和闭包。还要确保您了解 this 和 Promises.

要与 jQuery 一起使用,您需要知道 jQuery 2.x .ajax() 将 return 成为 thenable,但这不是承诺。这已在 jQuery 3.x 中修复。所以现在请使用 RSVP.resolve:

model() {
  return Ember.RSVP.resolve($.ajax({
    type: "GET",
    url: "https://api.who.pm/apple.com",
    dataType: "json",
  }));
}