我遵循了ember Super Rental 3.15教程,当我进入“处理数据”部分时,我使用模型挂钩更新了路径索引文件,该页面停止了工作。我还发现余烬教程不完整。
错误说地图属性未定义路由index.js文件中的代码:
import Route from '@ember/routing/route';
const COMMUNITY_CATEGORIES = [
'Condo',
'Townhouse',
'Apartment'
];
export default class IndexRoute extends Route {
async model() {
let response = await fetch('/api/rentals.json');
let { data } = await response.json();
return data.map(model => {
let { attributes } = model;
let type;
if (COMMUNITY_CATEGORIES.includes(attributes.category)) {
type = 'Community';
} else {
type = 'Standalone';
}
return { type, ...attributes };
});
}
}
您的问题是fetch('/api/rentals.json');
没有返回正确的数据。因此,当您执行let { data } = await response.json();
时,data
将为undefined
,而您无法执行undefined.map
。
所以您发布的代码是正确。问题出在别的地方。您可以检查:
rentals.json
文件?如果您打开http://localhost:4200/api/rentals.json
,您会看到数据吗?那你完成了this吗?mirage
中看到一些错误。 super-rentals
教程not不使用mirage
。我可以看到此here(旁注:git repo是根据指南自动created,因此它始终是最新的)。所以这可能是您的问题。根据如何配置Mirage,它将基本上模拟all您的ajax
请求。这意味着fetch(...
将不再正常工作,而Mirage则假定您始终想使用模拟数据,并且未正确配置Mirage。您可以尝试从package.json
中删除幻影,重新运行npm install
,重新启动ember server
,然后重试。