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);

編集:もう1つあります。私のデータは 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 に答える