我目前正在使用“ember-1.0.0-rc.7.js”来管理我的 ember 应用程序的持久性和数据存储。
用户.js
App.User = DS.Model.extend({
firstName: DS.attr('string'),
lastName: DS.attr('string'),
category: DS.attr('string'),
status: DS.attr('string'),
position: DS.attr('string'),
fullName: function()
{
return '%@ %@'.fmt(this.get('firstName'), this.get('lastName'))
}.property('firstName', 'lastName')
});
App.User.FIXTURES =
[
{
id: 1,
firstName: 'Derek',
lastName: "H",
category: "admin",
status: "offline",
position: "3232"
},
{
id: 2,
firstName: 'Jim',
lastName: "H",
category: "admin",
status: "online",
position: "322"
}
];
用户列表控制器.js
App.UserListController = Ember.ArrayController.create({
content: [],
users: App.User.find()
});
store.js
App.Store = DS.Store.extend({
revision: 12,
adapter: 'DS.FixtureAdapter'
});
从上面,我假设 App.User.find() 会返回给我所有的用户。但是,我收到以下错误:
来自 Firebug 的错误:
Your application does not have a 'Store' property defined. Attempts to call 'find' on model classes will fail. Please provide one as with 'YourAppName.Store = DS.Store.extend()'
TypeError: store is undefined
该消息没有意义,但商店是为 App 定义的。如果未定义商店,则以下代码将不起作用。
在下面的代码中,我在路由的上下文中调用 App.User.find() 并且它可以工作。
路由器.js
Bib.Router.map(function () {
this.resource('index', { path: '/' });
});
App.IndexRoute = Ember.Route.extend({
model: function () {
return ['a','b', 'c' ];
},
renderTemplate: function () {
this.render();
this.render('userList', { outlet: 'userList', into: 'application', controller: App.UserListController });//render the list in list outlet
},
setupController: function (controller, model)
{
controller.set('menu', model);
controller.set('test', App.User.find());
}
});
在 index.html
<script type="text/x-handlebars" id="userList" data-template-name="userList">
{{#each controller}}
{{firstName}}
{{/each}}
</script>
我希望那里的控制器代表 UserListController 并让它引用用户模型。请记住,我无法将其连接到路由中,因为我只有一个用于此应用程序的路由。
我相信这是由于我打电话的背景。换句话说,在控制器中使用它。我可能不了解控制器和模型之间的关系的基本概念。
任何建议表示赞赏,谢谢,D