2

我刚刚开始使用 Ember.js 框架,我有一个简单的问题。我将我的数据初始化为普通 JS 对象(填充模板,由我的 PHP 脚本创建),我想在 Ember.Application 启动之前将它们转换为 Ember.js 对象(或者在它启动后立即,我不'还不知道区别)。

这样的事情可能吗?如果是,最好的方法是什么?

例子:

App.User = Em.Object.extend({
    id: null,
    avatar: "/path/to/default/avatar.jpg",
    name: null,
});
my_data = [
    {"id":1, "name":"John Doe"}, 
    {"id":2, "name":"Barrack Obama", "avatar":"/president/photo.jpg"}
];
App.usersController = Em.ArrayController.create({
    content: [],
    addUser: function(user) { ... },
});

我需要这样的东西:

App.usersController.initialize(my_data);

编辑:还有一件事。我的数据与 Ember 对象的格式不完全相同,因此我需要进行一些转换。举个例子,假设我将头像和名字包裹在另一个对象中,如下所示:

{
  "id":2, 
  "info": {
      "name":"Barrack Obama", 
      "avatar":"/president/photo.jpg"
  }
}
4

1 回答 1

4

您可以使用该map函数来“转换”您的数组,请参阅http://jsfiddle.net/pangratz666/agp8C/

App.usersController = Em.ArrayController.create({
    content: [],
    initWithDataFromServer: function(hash){
        var users = hash.map(function(item){
            return App.User.create({
                id: item.id,
                name: item.info.name,
                avatar: item.info.avatar
            });
        });
        this.pushObjects(users);
    }
});
App.usersController.initWithDataFromServer(my_data);
于 2012-07-15T09:07:20.753 回答