https://ember-twiddle.com/47a9f3254808ad4a1e093c71393a1016
saga^^
https://ember-twiddle.com/f18b3f7d1ad449a5b7f2ee7bb3fecd91
blow up^^
| export const updateItem = (id, name) => dispatch => dispatch({type: 'UPDATE_ITEM', id, name}); | |
| export const toggleEdit = (id, value) => dispatch => dispatch({type: 'TOGGLE_EDIT', id, value}); |
| import Ember from 'ember'; | |
| import hbs from 'htmlbars-inline-precompile'; | |
| import { connect } from 'ember-redux'; | |
| const stateToComputed = state => { | |
| return { | |
| name: state.data.name, | |
| loading: state.data.loading | |
| }; | |
| }; |
| import Ember from 'ember'; | |
| import hbs from 'htmlbars-inline-precompile'; | |
| import { connect } from 'ember-redux'; | |
| const stateToComputed = state => { | |
| return { | |
| number: state.saga.number, | |
| loading: state.saga.loading | |
| }; | |
| }; |
| import * as types from '../actions/types'; | |
| export const addTodo = text => dispatch => dispatch({type: types.ADD_TODO, text}); | |
| export const deleteTodo = id => dispatch => dispatch({type: types.DELETE_TODO, id}); | |
| export const editTodo = (id, text) => dispatch => dispatch({type: types.EDIT_TODO, id, text}); | |
| export const completeTodo = id => dispatch => dispatch({type: types.COMPLETE_TODO, id}); | |
| export const clearCompleted = () => dispatch => dispatch({type: types.CLEAR_COMPLETED}); | |
| export const showAll = () => dispatch => dispatch({type: types.SHOW_ALL}); | |
| export const showActive = () => dispatch => dispatch({type: types.SHOW_ACTIVE}); | |
| export const showCompleted = () => dispatch => dispatch({type: types.SHOW_COMPLETED}); |
| https://u716525.dl.dropboxusercontent.com/u/716525/images/toranbillups.png |
| import Ember from 'ember'; | |
| import hbs from 'htmlbars-inline-precompile'; | |
| import { connect } from 'ember-redux'; | |
| const stateToComputed = state => { | |
| return { | |
| number: state.number | |
| }; | |
| }; |
| import Ember from 'ember'; | |
| export default Ember.Helper.helper(function(params) { | |
| var reviews = params[0] || []; | |
| var total = reviews.map((review) => { | |
| return review.rating; | |
| }).reduce((prev, next) => { | |
| return prev + next; | |
| }); | |
| var fullStars = Math.floor(total / reviews.length); |
| import Ember from 'ember'; | |
| import hbs from 'htmlbars-inline-precompile'; | |
| import { connect } from 'ember-redux'; | |
| var stateToComputed = (state) => { | |
| return { | |
| number: state.number | |
| }; | |
| }; |
| import Ember from 'ember'; | |
| import hbs from 'htmlbars-inline-precompile'; | |
| const createStore = (reducer) => { | |
| var pointer = 0; | |
| var state = []; | |
| var listeners = []; | |
| var firstState = reducer(); | |
| state.push(firstState); | |
| var store = { |