/ In einem Controller kann das Modellattribut nicht gesetzt werden - ember.js, ember-data

kann das Modellattribut in einem Controller nicht festlegen - ember.js, ember-data

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:

  1. 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.
  2. 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.
  3. Die Eigenschaft "set" von null kann nicht gelesen werden. TypeError: Die Eigenschaft "set" von null kann nicht gelesen werden
  4. 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 № 1

Es 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);
}