2012-07-14 2 views
2

방금 ​​Ember.js 프레임 워크를 사용하기 시작했으며 간단한 문제가 있습니다. 내 데이터를 일반 JS 개체 (내 PHP 스크립트로 작성된 템플릿으로 채워짐)로 초기화하고 Ember.Application이 시작되기 전에 Ember.js 개체로 변환하고 싶습니다. (또는 시작 직후에, 아직 차이점을 안다.)일반 JS 개체를 Ember.js로 변환합니다. ArrayController

그런 것이 가능합니까? 그렇다면 최선의 방법은 무엇입니까?

예 :

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" 
    } 
} 
+0

https://github.com/emberjs/data를보십시오 –

+1

Ember.Object로 변환 한 후 App.usersController.pushObjects (my_data)의 문제점은 무엇입니까? – Rajat

+0

그건 내 요점이야. 불필요한 코드없이 쉽게 변환 할 수 있습니까? –

답변

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

감사합니다.이 방법을 사용했습니다. –

관련 문제