Ich habe ein einfaches Modell mit dem Namen "test", das so aussieht:
export default DS.Model.extend ({
name: DS.attr("string")
})
Mein Modell-Hook in der "Test" -Route ist wie folgt definiert:
export default Ember.Route.extend({
model() {
return this.store.createRecord("test");
}
});
Ich habe versucht, model.name im "test" -Controller einen Anfangswert zuzuweisen, aber ich kann das "set" nicht zum Laufen bringen.
export default Ember.Controller.extend({
init: function() {
let mod = this.get("model");
this.set (mod.name, "dummyName");
}
})
Ember Inspector sagt mod = null. Was mache ich falsch?
Aktualisieren: Ich habe die 4 Syntaxänderungen ausprobiert, wie in den Kommentaren unten empfohlen. Keiner scheint zu funktionieren. Ich erhalte für jedes folgende Fehlermeldungen:
Keine der 4 vorgeschlagenen Syntaxen scheint zu funktionieren. Ich erhalte für jedes folgende Fehlermeldungen:
- Assertion fehlgeschlagen: Der Pfad "model.name" muss global sein, wenn kein obj angegeben ist. Fehler: Assertion fehlgeschlagen: Pfad "model.name" muss global sein, wenn kein obj angegeben ist.
- Sie müssen ein Objekt und einen Schlüssel zum Festlegen angeben. Fehler: Assertion fehlgeschlagen: Sie müssen ein Objekt und einen Schlüssel zum Festlegen angeben.
- Die Eigenschaft "set" von null kann nicht gelesen werden. TypeError: Die Eigenschaft "set" von null kann nicht gelesen werden
- Objekt im Pfad "Modell" konnte nicht gefunden werden oder wurde zerstört. Fehler: Eigenschaftssatz fehlgeschlagen: Objekt im Pfad "Modell" konnte nicht gefunden werden oder wurde zerstört.
Scheint mir zu sagen, dass "model" aus irgendeinem Grund null ist.
Aktualisieren:Mein Controller sieht tatsächlich so aus:
import Ember from "ember";
export default Ember.Controller.extend({
init: function() {
this.set ("model.name", "dummyName");
},
actions: {
save() {
this.get("model").save();
this.transitionToRoute("scenarios");
return false;
},
cancel(){
this.transitionToRoute("scenarios");
return false;
}
}
});
Mit diesem Controller erhalte ich folgenden Fehler:
Eigenschaftssatz fehlgeschlagen: Objekt im Pfad "Modell" konnte nicht gefunden werden oder wurde zerstört. Fehler: Eigenschaftssatz fehlgeschlagen: Objekt im Pfad "Modell" konnte nicht gefunden werden oder wurde zerstört.
Wenn ich den "init" -Hook entfernt habe, funktionieren die Aktionen "Speichern" und "Abbrechen" einwandfrei. Die Benennung scheint in Ordnung zu sein; Ich habe Ember-Cli-Pods verwendet, um den anfänglichen Code zu generieren
Wird "model" zu dem Zeitpunkt geladen, an dem der "init" -Hook des Controllers aufgerufen wird?</ p>Antworten:
0 für die Antwort № 1Es ist wahrscheinlich, dass das Modell nicht in den Init-Hook geladen ist. Sie können Ihren Code später in einen Run einbinden:
init: function() {
this._super();
var _this = this;
Ember.run.later(function() {
_this.set("model.name", "dummyName");
});
},
Oder eine bessere Möglichkeit wäre, die Eigenschaft beim Erstellen des Modells festzulegen:
return this.store.createRecord({name: "test"});
wie in den Kommentaren vorgeschlagen.
0 für die Antwort № 2
Versuchen Sie, dies zu Ihrem hinzuzufügen route.js
Datei:
setupController(controller, model) {
controller.set("model", model);
}