/
basic-2.coffee
90 lines (73 loc) · 2.4 KB
/
basic-2.coffee
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
root = exports ? this
root.App = Em.Application.create()
# Models
App.Trackback = Em.Object.extend
site: null
App.Comment = Em.Object.extend
title: null
body: null
App.Post = Em.Object.extend
trackbacks: []
comments: []
title: null
body: null
# Controllers
App.ApplicationController = Em.ObjectController.extend()
App.TrackbacksController = Em.ArrayController.extend()
App.CommentsController = Em.ArrayController.extend()
App.PostController = Em.ObjectController.extend()
App.PostsController = Em.ArrayController.extend
content: []
# Views
App.ApplicationView = Em.View.extend
templateName: 'application'
App.TrackbacksView = Em.View.extend
templateName: 'trackbacks'
App.CommentsView = Em.View.extend
templateName: 'comments'
App.PostsView = Em.View.extend
templateName: 'posts'
App.PostView = Em.View.extend
templateName: 'post'
# Test data, this belongs in a fixture but to keep things simple it is here
testPost = App.Post.create
comments: [App.Comment.create(title: "Comment from annoying internet user")]
trackbacks: [App.Trackback.create(site: "http://google.com")]
title: "Post Title"
intro: "Post Intro"
body: "Post Body"
id: 1
# Routes
App.Router = Em.Router.extend
enableLogging: true
root: Em.Route.extend
index: Em.Route.extend
route: '/'
redirectsTo: 'posts'
posts: Em.Route.extend
route: '/posts'
showPost: Em.Router.transitionTo('post')
connectOutlets: (router) ->
router.get("applicationController").connectOutlet('posts', [testPost])
post: Em.Route.extend
route: '/posts/:post_id'
showTrackbacks: Em.Route.transitionTo('trackbacks')
showComments: Em.Route.transitionTo('comments')
connectOutlets: (router, post) ->
router.get('applicationController').connectOutlet('post', post)
index: Em.Route.extend
route: '/'
redirectsTo: 'comments'
comments: Em.Route.extend
route: '/comments'
connectOutlets: (router) ->
postController = router.get('postController')
postController.connectOutlet('comments', postController.get('comments'))
trackbacks: Em.Route.extend
route: '/trackbacks'
connectOutlets: (router) ->
postController = router.get('postController')
postController.connectOutlet('trackbacks', postController.get('trackbacks'))
App.router = App.Router.create()
$ ->
App.initialize(App.router)