Services
Last updated
Was this helpful?
Was this helpful?
import { TrackedArray } from 'tracked-built-ins';
import Service from '@ember/service';
export default class ShoppingCartService extends Service {
items = new TrackedArray();
add(item) {
this.items.push(item);
}
remove(item) {
this.items.splice(1, this.items.findIndex((i) => i === item));
}
empty() {
this.items.clear();
}
}import Component from '@glimmer/component';
import { inject as service } from '@ember/service';
import { action } from '@ember/object';
import ShoppingCartService from 'my-app/services/shopping-cart';
export default class CartContentsComponent extends Component {
@service declare shoppingCart: ShoppingCartService;
@action
remove(item) {
this.shoppingCart.remove(item);
}
}import Component from '@glimmer/component';
import { inject as service } from '@ember/service';
import { action } from '@ember/object';
import ShoppingCartService from 'my-app/services/shopping-cart';
export default class CartContentsComponent extends Component {
@service declare shoppingCart: ShoppingCartService;
@action
remove(item) {
// Error: Property 'saveForLater' does not exist on type 'ShoppingCartService'.
this.shoppingCart.saveForLater(item);
}
}import Component from '@glimmer/component';
import { getOwner } from '@ember/owner';
import { action } from '@ember/object';
import ShoppingCartService from 'my-app/services/shopping-cart';
export default class CartContentsComponent extends Component {
get cart() {
return getOwner(this)?.lookup('service:shopping-cart') as ShoppingCartService;
}
@action
remove(item) {
this.cart.remove(item);
}
}