7 |
11 |
{{ PostCtrl.post.content }}
12 |
`,
13 | controller: 'PostCtrl',
14 | controllerAs: 'PostCtrl',
15 | resolve: {
16 | post: ['$route', function ($route) {
17 | return store.find('post', $route.current.params.id)
18 | }]
19 | }
20 | })
21 | }]
22 |
23 | export const Post = ['$scope', '$timeout', '$route', '$routeParams', function ($scope, $timeout, $route, $routeParams) {
24 | this.post = $route.current.locals.post
25 |
26 | this.onChange = function () {
27 | $timeout(() => {
28 | this.post = store.get('post', $routeParams.id)
29 | })
30 | }
31 |
32 | store.on('all', this.onChange, this)
33 |
34 | $scope.$on('$destroy', () => {
35 | store.off('all', this.onChange)
36 | })
37 | }]
38 |
--------------------------------------------------------------------------------
/client/angular1/src/posts.js:
--------------------------------------------------------------------------------
1 | import angular from 'angular'
2 | import {store} from './store'
3 |
4 | const PAGE_SIZE = 5
5 |
6 | /**
7 | * @param {number} pageNum The page to retrieve.
8 | * @return {Promise} A Promise that resolves to a Page object.
9 | */
10 | function fetchPage (pageNum) {
11 | return store.getMapper('post').findAll({
12 | limit: PAGE_SIZE,
13 | offset: (pageNum - 1) * PAGE_SIZE,
14 | orderBy: [['created_at', 'desc']]
15 | }).then(function (page) {
16 | page.data = store.add('post', page.data)
17 | return page
18 | })
19 | }
20 |
21 | export const PostsConfig = ['$routeProvider', function ($routeProvider) {
22 | $routeProvider.when('/', {
23 | template: `