两种方式实现用户管理(一)
作者: pudgecon –
本文共两篇文章,通过两种常见的方式实现了一个简单的用户管理。
一种是采用跳转至一个新页面进行用户信息查看与修改;另一种是采用在同一个页面进行用户信息查看与修改。
第一篇讲述使用第一种方案实现的过程。
首先是创建应用:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
App = Ember.Application.create(); App.Store = DS.Store.extend({ revision: 12, adapter: 'DS.FixtureAdapter' }); App.User = DS.Model.extend({ name: DS.attr('string'), email: DS.attr('string') }); App.User.FIXTURES = [ { id: 1, name: 'user1', email: 'user1@example.com' }, { id: 2, name: 'user2', email: 'user2@example.com' }, { id: 3, name: 'user3', email: 'user3@example.com' }, { id: 4, name: 'user4', email: 'user4@example.com' }, { id: 5, name: 'user5', email: 'user5@example.com' } ]; |
定义App的template
:
1 2 3 4 |
<script type="text/x-handlebars"> <h2>Users' example</h2> {{outlet}} </script> |
定义Router
:
1 2 3 4 5 6 7 8 9 10 11 |
App.Router.map(function() { this.resource('users'); this.resource('user', { path: 'users/:user_id'}); }); //默认跳转至`users` App.IndexRoute = Ember.Route.extend({ redirect: function() { this.transitionTo('users'); } }); |
这样,我们内容将会render到上面的outlet
内。
之后,定义我们的UsersRoute
:
1 2 3 4 5 |
App.UsersRoute = Ember.Route.extend({ model: function() { return App.User.find(); } }); |
users
模板:
1 2 3 4 5 6 7 8 |
<script type="text/x-handlebars" data-template-name="users"> <h3>Users</h3> <ul> {{#each controller}} <li>{{#linkTo 'user' this}}{{name}}{{/linkTo}}</li> {{/each}} </ul> </script> |
这样,就可以顺利地列出我们所有的users
了,上面的linkTo
helper就会为我们构造类似#/users/2
这样的url。
开始User
因为Ember自动为我们构造了UserRoute
,并使用了默认的model
方法,因此,这里并不需要显示地定义UserRoute
。
我们直接写我们的template
:
1 2 3 4 5 6 |
<script type="text/x-handlebars" data-template-name="user"> <h3>User</h3> <p>name: {{name}}</p> <p>email: {{email}}</p> {{#linkTo 'users'}}back{{/linkTo}} </script> |
这样,我们就实现了在新页面打开具体user的方案。具体代码参见http://jsfiddle.net/pudgecon/gbZBQ/3/。
博客评论基于Disqus