Skip to content

Instantly share code, notes, and snippets.

@code0100fun
Created April 20, 2017 01:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save code0100fun/7a3514a5679a7ab17b7019e94a8f5112 to your computer and use it in GitHub Desktop.
Save code0100fun/7a3514a5679a7ab17b7019e94a8f5112 to your computer and use it in GitHub Desktop.
Ember Data Service Computed
import Ember from 'ember';
const {
inject: { service },
} = Ember;
export default Ember.Controller.extend({
product: service(),
});
import Ember from 'ember';
export default Ember.Controller.extend({
});
export default function() {
this.get('products');
};
import { Factory, faker } from 'ember-cli-mirage';
export default Factory.extend({
price: 2,
});
import { Model } from 'ember-cli-mirage';
export default Model.extend({
});
export default function(server) {
server.create('product', { price: 1 });
server.create('product', { price: 2 });
}
import { JSONAPISerializer } from 'ember-cli-mirage';
export default JSONAPISerializer.extend({
});
import Model from "ember-data/model";
import attr from "ember-data/attr";
export default Model.extend({
price: attr('number'),
});
import Ember from 'ember';
import config from './config/environment';
const Router = Ember.Router.extend({
location: 'none',
rootURL: config.rootURL
});
Router.map(function() {
this.route('products');
});
export default Router;
import Ember from 'ember';
export default Ember.Route.extend({
});
import Ember from 'ember';
export default Ember.Route.extend({
model() {
return this.store.findAll('product');
}
});
import Ember from 'ember';
const {
computed,
inject: { service },
} = Ember;
export default Ember.Service.extend({
store: service(),
products: computed(function() {
return this.get('store').peekAll('product');
}),
totalPrice: computed('products.@each.price', function() {
return this.get('products').reduce((acc, p) => {
acc = acc + p.get('price');
return acc;
}, 0);
}),
});
<h1>Application</h1>
<p>Total Price: {{product.totalPrice}}</p>
{{outlet}}
{{link-to 'Products' 'products'}}
<h2>Products</h2>
<ul>
{{#each model as |product|}}
<li>{{product.price}}</li>
{{/each}}
</ul>
{
"version": "0.12.1",
"ENV": {
"ember-cli-mirage": {
"enabled": true
}
},
"EmberENV": {
"FEATURES": {}
},
"options": {
"use_pods": false,
"enable-testing": false
},
"dependencies": {
"jquery": "https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.3/jquery.js",
"ember": "2.12.0",
"ember-template-compiler": "2.12.0",
"ember-testing": "2.12.0"
},
"addons": {
"ember-data": "2.12.1",
"ember-cli-mirage": "0.3.1"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment