2012-05-23 2 views
3

Проблема: JSON получен с сервера, но имеет значение только свойство id. GUI отображает только строку «2 1», а {{photoName}} игнорируется. Вручную вызывает MyApp.PhotoController.get('content').objectAt(0).get('photoName')undefined, тогда как MyApp.PhotoController.get('content').objectAt(0).get('id') возвращает правильный идентификатор.Ember Данные только заполняют свойство «id»

Любые Созерцания?

// Моя модель:

MyApp.Photo = DS.Model.extend({ 
    id: DS.attr('number'), 
    photoName: DS.attr('string'), 
    photoDescription: DS.attr('string'), 
    photoFullSizeURL: DS.attr('string'), 
    photoThumbnailURL: DS.attr('string') 
}); 

MyApp.Photo.reopenClass({ 
    url: 'photos.json' 
}); 

// Мой StateManager

MyApp.stateManager = Ember.StateManager.create({ 
    rootElement: '#mainArea', 
    initialState: 'showMainView', 

    showMainView: Ember.ViewState.create({ 
     enter: function(stateManager) { 
      this._super(stateManager); 
      var photos = MyApp.store.findAll(MyApp.Photo); 
      MyApp.PhotosController.set('content', photos); 
     }, 

     view: Em.ContainerView.create({ 
      childViews: ['photoListView'], 

      photoListView: Em.View.extend({ 
       elementId: 'photoList', 
       templateName: 'photo-list-view', 
       contentBinding: 'MyApp.PhotosController.content' 
      }) 
     }) 
    }) 
}) 

// Мой контроллер:

MyApp.PhotosController = Ember.ArrayProxy.create({ 
    content: [] 
}); 

// Мой шаблон:

<script type="text/x-handlebars" data-template-name="photo-list-view"> 
     PHOTOS:<br/> 
     {{#each content}} 
      {{photoName}} {{id}} 
     {{/each}} 
</script> 

// JSON, полученный от сервера:

[ 
    { 
     "id": 2, 
     "photoName": "Bird Photo", 
     "photoDescription": "Bird Photo Description", 
     "photoFullSizeUrl": "photos/bird.jpg", 
     "photoThumbnailUrl": "photos/bird_thumb.png"   
    }, 
    { 
     "id": 1, 
     "photoName": "Bird Photo 2", 
     "photoDescription": "Bird Photo Description 2", 
     "photoFullSizeUrl": "photos/bird.jpg", 
     "photoThumbnailUrl": "photos/bird_thumb.png" 
    } 
] 

Код также размещен в Сущности здесь: https://gist.github.com/2775283

ответ

1

Ах .. Понял .. нужно добавить код для снятия camelize моих свойств:

DS.Model.reopen({ 
    namingConvention: { 
    keyToJSONKey: function(key) { 
     return key; 
    }, 

    foreignKey: function(key) { 
     return key; 
    } 
    } 
}); 

Нашел со следующей страницы, которую я предполагаю, что я должен был прочитать, в любом случае: D https://github.com/emberjs/data/blob/master/BREAKING_CHANGES.md