2 Stimmen

Wie fügt man ein Array von Objekten zu einem neu erstellten Objekt mit einer hasMany-Beziehung in Ember hinzu?

Nehmen Sie das folgende Beispiel:

//Elternobjekt:
App.Parent = DS.Model.extend({
children: DS.hasMany('child');
name: DS.attr('string');
});

//Kindobjekt:
App.Child = DS.Model.extend({
parent: DS.belongsTo('App.Parent');
name: DS.attr('string');
});

Ich versuche, ein neues Elternobjekt mit vielen Kindern mit folgendem zu erstellen:

var child1 = App.Child.createRecord({
name: "Test"
});

var child2 = App.Child.createRecord({
name: "Test2"
});

var newChildrenArray = [];
newChildrenArray.pushObject(child1);
newChildrenArray.pushObject(child2);

var parent = App.Parent.createRecord({
children: newChildrenArray,
name: "Hallo :-)"
});

Ich kann auf parent.get('children') zugreifen und die Namen der Kinder abrufen, wenn ich mit einem Alert durchgehe. Aber in meinen Handlebars-Vorlagen erscheinen die Kinder nicht unter den Eltern wie bei meinen Eltern- und Kinder-FIXTUREN. Muss ich meinem Template irgendwie mitteilen, dass es sich neu rendering soll, oder lädt das Template die hasMany-Zuordnung nicht, oder erstelle ich die Beziehung falsch?

Ich verwende die neuesten Versionen von Ember, Ember-Data, Handlebars usw., habe jedoch auch andere Versionen ausprobiert, ohne Erfolg, also muss ich etwas falsch machen.

0voto

Anonymous Punkte 6051

Ich hatte alle möglichen Methoden ausprobiert, um mein Array auf das 'children'-Eigenschaft des übergeordneten Objekts zu bekommen, aber ich bin über diesen Code-Schnipsel in einem Pull-Request auf Github gestolpert und jetzt funktioniert es.

Ich vermute, mein Array war der falsche Typ für das übergeordnete Objekteigenschaft, immer noch weiß ich nicht, wie ich später ein separates Array erstellen würde, um es dem Objekt zu übergeben, aber das direkte Hinzufügen funktioniert!

var child1 = App.Child.createRecord({
name: "Test"
});

var child2 = App.Child.createRecord({
name: "Test2"
});

/*var newChildrenArray = [];
newChildrenArray.pushObject(child1);
newChildrenArray.pushObject(child2);*/

var parent = App.Parent.createRecord({
name: "Hallo :-)"
});    

parent.get('children').pushObject(child1);
parent.get('children').pushObject(child2);

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X