2014-01-06 2 views
5

При попытке нажать на вновь созданный объект родителя в имеет много отношений, я бег в ошибке:pushObject родителя в имеет много relationshop

Assertion failed: The content property of DS.PromiseArray should be set before modifying it 

Вот мой код.

App.User = DS.Model.extend({ 
     name : DS.attr('string'), 
     selections : DS.hasMany('selection', {async: true}), 
     creationDate : DS.attr('date') 
    }); 

    App.Selection = DS.Model.extend({ 
     value : DS.attr('string') 
    }); 

    App.PollController = Ember.ObjectController.extend({ 
     actions: { 
      save: function(){ 
       // create new user record in store 
       var newUser = this.store.createRecord('user', { 
        name : this.get('newUserName'), 
        creationDate : new Date() 
       }); 

       // create new selection record in store 
       var newSelection = this.store.createRecord('selection', { 
        id : 11, 
        value : "hallo" 
       }); 

       // push selection to user 
       newUser.get('selections').pushObject(newSelection); 

       // save new user 
       newUser.save(); 
      } 
     } 
    }); 

accourse Ошибка, когда я пытаюсь нажать на объект newSelection для Выборки массива пользовательской модели.

Также пытался изменить строку

   // push selection to user 
       newUser.get('selections').then(function(selections){ 
        selections.pushObject(newSelection); 
       }); 

Тогда я не получаю сообщение об ошибке, но newSelection не прижата к пользователю. Массив выбора пользователя остается пустым.

Что я делаю неправильно? Действительно ли я ошибаюсь? Или есть ли ошибка в EmberJs/Ember Data?

Я использую бета EmberJS 1.2.0 и Ember данных 5.

ответ

8

Я предполагаю, что вы хотите сказать, что спасброски не посылать назад выбор, вызвать код для добавления правильно.

Важно отметить, что обещания асинхронно

  newUser.get('selections').then(function(selections){ 
       // this will happen after save 
       selections.pushObject(newSelection); 
      }); 

      newUser.save(); 

Вы должны ждать, чтобы сохранить, пока выбор не будет нажата

http://emberjs.jsbin.com/gotasa/1/edit?html,js,output

  newUser.get('selections').then(function(selections){ 
       selections.pushObject(newSelection); 
       newUser.save(); 
      }); 
+0

нон это работает для меня:/ – Azaryan

+0

Ничего из того, что не работает для вас? – Kingpin2k

+0

Ни один из этих примеров не поднял наверх – Azaryan

Смежные вопросы