2014-06-12 10 views
6

Chcę utworzyć nowy rekord witryny. Model wygląda:Ember-data createRecord with hasMany relationship without saving

var SiteModel = DS.Model.extend({ 
    name: attr(), 
    ... 

    languages: DS.hasMany('language'), 
}); 

Obiekt language opisuje w jakich językach zawartość witryny może być napisane. Aby utworzyć formularz, muszę utworzyć model na mojej trasie. Więc chcę, aby utworzyć nowy rekord, bez zapisywania ten jeden z PB:

var WebsitesNewRoute = Ember.Route.extend({ 
    model: function() { 
     return this.store.createRecord('site', { 
       languages: Ember.A() 
     }); 
    } 
} 

To nie działa zgodnie z przeznaczeniem, jak mam następujący błąd: cannot set read-only property "languages" on object: <[email protected]:site::ember1012:null>>. Dlaczego właściwość languages jest tylko do odczytu? O ile wiem, nie skonfigurować że w moim modelu ...


Znam pytanie Ember Data- createRecord in a hasMany relationship, ale w moim przypadku nie chcesz zaoszczędzić jeszcze coś (ja tylko chce stworzyć model , więc mógłbym go użyć w moim szablonie).

Odpowiedz

6

Ember-Data definiuje languages jako właściwość tylko do odczytu, ponieważ nie chce zastępować tablicy. Bez względu na to, czy oszczędzasz, czy nie, Ember-Data chce dodać relacje z addObject i usunąć relacje z removeObject.

Więc jeśli chcesz dodać język, należy to zrobić:

model: function() { 
    var model = this.store.createRecord('site'); 
    var language = getLanguage(); 
    model.get('languages').addObject(language); 
    return model; 
} 

Co robisz dając languages do createRecord, zasadniczo nazywając model.set('languages', Ember.A()) i Ember-danych nie tak .

To głupie, wiem, ale tak właśnie działa Ember-Data.

+0

Poeksperymentuj, dlaczego Ember zaznacza to jako tylko do odczytu. Ustawienie języków, jak to tutaj opisano, działa naprawdę. Ale wciąż mam ten błąd. Co gorsza, nawet jeśli napisałbym tylko 'return this.store.createRecord ('site');' w funkcji modelu pojawia się błąd. –

+0

To może być błąd w Ember-Data. Czy istnieje szansa, że ​​uda ci się stworzyć JSBin, który powiela ten problem? – GJK

+0

Jakieś słowo na temat, czy jest to błąd Ember-Data? Właśnie napotkałem to przy użyciu ember-select-2 i selekcji wielokrotnej, która ustawia ma wiele relacji ... –

Powiązane problemy