在路由器模型中调用多个 ajax 时未捕获(承诺)
Uncaught (in promise) when calling multiple ajax within router model
我在 ember 路由器模型中调用多个 API 端点
我正在使用 ember-cli 3.11.0
当我刷新页面时,它无法加载 "Uncaught (in promise)",具体在 $.ajax 中调用
import $ from 'jquery';
import { hash } from 'rsvp';
export default Route.extend(AuthenticatedRouteMixin, {
model: function (param) {
return hash({
category: $.ajax({
url: 'http://localhost:8000/catalog/category/' + param.id,
type: 'GET'
}).then(function(res) {
return res;
}),
categories: $.ajax({
url: 'http://localhost:8000/catalog/category',
type: 'GET'
}).then(function(res) {
return res;
})
})
}
});
使用这些代码,我想在 setupController 中调用类似
的东西
setupController(ctrl, model) {
console.log(model.category);
console.log(model.categories);
}
Ola @ave 感谢您的提问!
正如@jelhan 在给您的评论中提到的,建议您现在使用 fetch
,因为它比使用 [=33 中的 $.ajax()
更现代 API =].
如果您需要支持 IE11 等较旧的浏览器,我建议您按照 https://github.com/ember-cli/ember-fetch 上的 README 说明安装 ember-fetch,基本上就是以下内容:
ember install ember-fetch
然后您可以将示例更新为以下内容:
import Route from '@ember/routing/route';
import fetch from 'fetch';
import { hash } from 'rsvp';
export default Route.extend(AuthenticatedRouteMixin, {
model(param) {
return hash({
category: fetch('http://localhost:8000/catalog/category/' + param.id)
.then((res) => res.json()),
categories: fetch('http://localhost:8000/catalog/category')
.then((res) => res.json()),
})
}
});
现在对于您的实际错误,我想您在 "Uncaught (in promise)" 中看到的错误实际上是这些请求之一由于某种原因而失败我建议在 [= 之后添加一个错误页面16=] 并且模板包含以下内容
{{log 'my error' model}}
这将有效地 console.log() 您从路线返回的错误,您将获得有关错误的更多信息
我在 ember 路由器模型中调用多个 API 端点 我正在使用 ember-cli 3.11.0 当我刷新页面时,它无法加载 "Uncaught (in promise)",具体在 $.ajax 中调用
import $ from 'jquery';
import { hash } from 'rsvp';
export default Route.extend(AuthenticatedRouteMixin, {
model: function (param) {
return hash({
category: $.ajax({
url: 'http://localhost:8000/catalog/category/' + param.id,
type: 'GET'
}).then(function(res) {
return res;
}),
categories: $.ajax({
url: 'http://localhost:8000/catalog/category',
type: 'GET'
}).then(function(res) {
return res;
})
})
}
});
使用这些代码,我想在 setupController 中调用类似
的东西setupController(ctrl, model) {
console.log(model.category);
console.log(model.categories);
}
Ola @ave 感谢您的提问!
正如@jelhan 在给您的评论中提到的,建议您现在使用 fetch
,因为它比使用 [=33 中的 $.ajax()
更现代 API =].
如果您需要支持 IE11 等较旧的浏览器,我建议您按照 https://github.com/ember-cli/ember-fetch 上的 README 说明安装 ember-fetch,基本上就是以下内容:
ember install ember-fetch
然后您可以将示例更新为以下内容:
import Route from '@ember/routing/route';
import fetch from 'fetch';
import { hash } from 'rsvp';
export default Route.extend(AuthenticatedRouteMixin, {
model(param) {
return hash({
category: fetch('http://localhost:8000/catalog/category/' + param.id)
.then((res) => res.json()),
categories: fetch('http://localhost:8000/catalog/category')
.then((res) => res.json()),
})
}
});
现在对于您的实际错误,我想您在 "Uncaught (in promise)" 中看到的错误实际上是这些请求之一由于某种原因而失败我建议在 [= 之后添加一个错误页面16=] 并且模板包含以下内容
{{log 'my error' model}}
这将有效地 console.log() 您从路线返回的错误,您将获得有关错误的更多信息