ember错误this.store.findAll不是函数
ember error this.store.findAll is not a function
大家好,我正在学习 emberjs 教程,我 运行 遇到了这个我无法解决的问题。当我尝试从存储中调用 findAll 函数时,它抛出一个类型错误并说 findAll 不是一个函数。当我使用 this.get() 方法时,它说它是一个经典的 ember 对象方法,不能在 Octane 类 中使用。有人知道如何解决这个问题吗?
提前感谢您的宝贵时间!
app/route/rental.js
import Route from '@ember/routing/route';
export default class RentalsRoute extends Route {
model() {
return this.store.findAll('rental');
}
}
app/models/rental.js
import Model, { attr } from '@ember-data/model';
export default class RentalModel extends Model {
@attr title;
@attr owner;
@attr city;
@attr propertyType;
@attr image;
@attr bedrooms;
@attr description;
}
mirage/config.js
export default function () {
this.namespace = '/api';
this.get('/rentals', function () {
return {
data: [
{
type: 'rentals',
id: 'grand-old-mansion',
attributes: {
title: 'Grand Old Mansion',
owner: 'Veruca Salt',
city: 'San Francisco',
'property-type': 'Estate',
bedrooms: 15,
image:
'https://upload.wikimedia.org/wikipedia/commons/c/cb/Crane_estate_(5).jpg',
},
},
{
type: 'rentals',
id: 'urban-living',
attributes: {
title: 'Urban Living',
owner: 'Mike Teavee',
city: 'Seattle',
'property-type': 'Condo',
bedrooms: 1,
image:
'https://upload.wikimedia.org/wikipedia/commons/0/0e/Alfonso_13_Highrise_Tegucigalpa.jpg',
},
},
{
type: 'rentals',
id: 'downtown-charm',
attributes: {
title: 'Downtown Charm',
owner: 'Violet Beauregarde',
city: 'Portland',
'property-type': 'Apartment',
bedrooms: 3,
image:
'https://upload.wikimedia.org/wikipedia/commons/f/f7/Wheeldon_Apartment_Building_-_Portland_Oregon.jpg',
},
},
],
};
});
}
你看到它的原因是从 v4 Ember 开始不允许最近出现的一些隐式服务注入。路线中的商店注入就是其中之一。它最初是作为 deprecation in 3.26 添加的,但现在从 v4 开始它已被删除,显然他们还没有更新文档。
你应该做的是明确地注入它,即在你的 app/route/rental.js
make
import Route from '@ember/routing/route';
import { inject as service } from '@ember/service';
export default class RentalsRoute extends Route {
@service store;
model() {
return this.store.findAll('rental');
}
}
大家好,我正在学习 emberjs 教程,我 运行 遇到了这个我无法解决的问题。当我尝试从存储中调用 findAll 函数时,它抛出一个类型错误并说 findAll 不是一个函数。当我使用 this.get() 方法时,它说它是一个经典的 ember 对象方法,不能在 Octane 类 中使用。有人知道如何解决这个问题吗?
提前感谢您的宝贵时间!
app/route/rental.js
import Route from '@ember/routing/route';
export default class RentalsRoute extends Route {
model() {
return this.store.findAll('rental');
}
}
app/models/rental.js
import Model, { attr } from '@ember-data/model';
export default class RentalModel extends Model {
@attr title;
@attr owner;
@attr city;
@attr propertyType;
@attr image;
@attr bedrooms;
@attr description;
}
mirage/config.js
export default function () {
this.namespace = '/api';
this.get('/rentals', function () {
return {
data: [
{
type: 'rentals',
id: 'grand-old-mansion',
attributes: {
title: 'Grand Old Mansion',
owner: 'Veruca Salt',
city: 'San Francisco',
'property-type': 'Estate',
bedrooms: 15,
image:
'https://upload.wikimedia.org/wikipedia/commons/c/cb/Crane_estate_(5).jpg',
},
},
{
type: 'rentals',
id: 'urban-living',
attributes: {
title: 'Urban Living',
owner: 'Mike Teavee',
city: 'Seattle',
'property-type': 'Condo',
bedrooms: 1,
image:
'https://upload.wikimedia.org/wikipedia/commons/0/0e/Alfonso_13_Highrise_Tegucigalpa.jpg',
},
},
{
type: 'rentals',
id: 'downtown-charm',
attributes: {
title: 'Downtown Charm',
owner: 'Violet Beauregarde',
city: 'Portland',
'property-type': 'Apartment',
bedrooms: 3,
image:
'https://upload.wikimedia.org/wikipedia/commons/f/f7/Wheeldon_Apartment_Building_-_Portland_Oregon.jpg',
},
},
],
};
});
}
你看到它的原因是从 v4 Ember 开始不允许最近出现的一些隐式服务注入。路线中的商店注入就是其中之一。它最初是作为 deprecation in 3.26 添加的,但现在从 v4 开始它已被删除,显然他们还没有更新文档。
你应该做的是明确地注入它,即在你的 app/route/rental.js
make
import Route from '@ember/routing/route';
import { inject as service } from '@ember/service';
export default class RentalsRoute extends Route {
@service store;
model() {
return this.store.findAll('rental');
}
}