Ember.js: ember 2.10 undefiniertes dynamisches Routensegment funktioniert nicht mehr.

Erstellt am 30. Nov. 2016  ·  22Kommentare  ·  Quelle: emberjs/ember.js

Dies sieht eher nach einer nicht unterstützten Funktion als nach einem Fehler aus, aber ich dachte, ich würde sie protokollieren.

Beim Upgrade von 2.9.1 auf 2.10 ist die folgende Ausnahme aufgetreten.

"Assertion Failed: You attempted to define a `{{link-to "timecards"}}` but did not pass the parameters required for generating its dynamic segments. You must provide param `login` to `generate`."
#app/router.js
this.route('timecards', {path: '/timecards/:login'}, function() {
  this.route('index', { path: '/' });
  this.route('timecard-day', {path: '/day/:date'});
  this.route('pay-period', {path: '/pay-period/:date'});
});

#app/routes/timecards.js #model hook
model(params) {    
  let login = params.login || this.get('currentUser.login');
  return this.store.peekAll('user').findBy('login', login);
}

Es war sehr praktisch, ein optionales dynamisches Segment auf der übergeordneten Route zu verwenden, um ein Standardbenutzermodell zu laden, anstatt es für jede einzelne untergeordnete Route laden zu müssen.

Ember 2.10 Inactive Needs Bug Verification Needs Submitter Response

Hilfreichster Kommentar

Dies blockiert 2.10 und 2.11 für uns. Gerne versuchen wir eine Lösung, wenn jemand bestätigen kann, dass dies eine Regression ist.

Alle 22 Kommentare

Ich bin mir ziemlich sicher, dass Sie dies immer noch tun können, indem Sie undefiniert übergeben und einen benutzerdefinierten Serialisierungs-Hook implementieren.

Die hier hinzugefügte Fehlermeldung ist ein ziemlich großer Gewinn für die Leute im Allgemeinen, und ich würde es vorziehen, wenn möglich zu bleiben ...

@rwjblue, das undefiniert an den Link-to-Helfer übergeben wird, gibt folgende Warnung aus: This link-to is in an inactive loading state because at least one of its parameters presently has a null/undefined value, or the provided route name is invalid.

Ich hatte auch Probleme mit:

{{link-to 'projects.project.tasks' project}}
  this.route('projects', function() {
    this.route('project', { path: ':id' }, function() {
      this.route('tasks');
    });
  });

Der Ember-Fehler hat über undefinierte id .
Die schnelle Lösung bestand darin, :id im Router in :project_id zu ändern

Ich denke, dass es keine echte Lösung ist und es verdient, als Fehler eingestuft zu werden. Ansonsten gab es keine Informationen zum Ändern des Routerverhaltens.

@Exelord , der nicht mit dem ursprünglich beschriebenen Fehler zusammenhängt und kein Fehler ist. Wir dokumentieren ausdrücklich, dass für die Standardimplementierung :modelname_id erforderlich ist , um sofort einsatzbereit zu sein. Wenn Sie ein benutzerdefiniertes Feld verwenden, müssen Sie die Serialisierung / Deserialisierung in der jeweiligen Route erneut implementieren.

@Exelord (als Nebenbemerkung, nicht direkt mit diesem Problem verbunden) ... Ich bin nicht sicher, ob dies dokumentiert ist oder nicht, aber ich glaube nicht, dass Sie dieselbe Kennung für ein dynamisches Segment mehr als einmal im Router verwenden können . Daher würde ich die Verwendung von ": id" und die Verwendung von ": modelname_id" mehrmals vermeiden. (zB bei Bedarf nochmal ": newmodelname_id" verwenden, nur etwas anderes)

@rwjblue @ sly7-7, also scheint es keine saubere Lösung für dieses Problem zu geben, richtig?

@arenoir können Sie eine Glut-Twiddle-Reproduktion dieses Problems machen, es klingt wie ein Fehler. Ein Repo des Problems hilft bei der Diagnose des Problems und bietet auch die Überprüfung des Fehlers.

@locks @pixelhandler
Sie haben ein Recht, Jungs. Vielen Dank für Hilfe und Erklärung. Aber tatsächlich hat es vor 2.10 funktioniert.
Ich denke jetzt war es ein Fehler oder ein unerwartetes Verhalten.

@ Pixelhandler okay, hier ist ein Twiddle.

: point_up: sieht nach einer guten Reproduktion aus. Dieses Etikett kann entfernt werden

Ich bin verwirrt, ob dies als Regression anzusehen ist oder ob ich es in der Anwendung korrigieren sollte.

Dies blockiert 2.10 und 2.11 für uns. Gerne versuchen wir eine Lösung, wenn jemand bestätigen kann, dass dies eine Regression ist.

Gleiches Problem für mich wie von @arenoir beschrieben

Heute auf dasselbe Problem stoßen 👎

@jakeleboeuf Ich hatte das gleiche Problem und ein Upgrade auf 2.13.1 hat es behoben. Welche Version hast du?

[BEARBEITEN]
Es ist 2 Uhr morgens hier und mein Gehirn ist fast in den Weltraum gegangen. Ich habe gerade festgestellt, dass ich es falsch getestet habe. Es geht immer noch weiter ...

Falls jemand auf dieses Problem stößt, könnte dies möglicherweise Folgendes sein:

import Controller from 'ember';
import { alias } from 'ember-computed';

export default Controller.extend({
  deployments: alias('model')
});

Beachten Sie, dass ich Contoller falsch importiere. Es sollte import Controller from 'ember-controller'; . Dies ist, wenn Sie Ember-Cli-Shims verwenden, was mein aktuelles Projekt verwendet. Ich war ungefähr eine Stunde lang verloren, bevor ich aufgab, zurückkam und klar sah, was ich falsch machte.

Long Shot hier, aber ich bin auf dieses Problem gestoßen, als ich versehentlich die native Object mit Embers Object-Klasse über Folgendes überschrieben habe:

const { Object } = Ember;

Dies führte dazu, dass mein Modell-Hook (wo Object.create aufgerufen wird) fehlschlug und aus irgendeinem Grund in der ausgelösten Ausnahme erwähnt wurde, dass dynamische Segmente nicht vorhanden waren. Ich denke, das ähnelt dem, was @alvincrespo in seinem obigen Kommentar erwähnt.

@lrdiv ja, ich denke das passiert bei mir zu.

Assertion Failed: You attempted to define a `{{link-to "control.templates.show"}}` but did not pass the parameters required for generating its dynamic segments. _ember.default.extend is not a function

@brunowego Ja, das ist der gleiche Fehler, den ich bekommen habe. In unserem Fall scheint dies eher eine irreführende Ausnahme als ein tatsächlicher Fehler zu sein.

@lrdiv das passierte mir auch, guter Fang! : v:

Was ich tat, war, Ember zu zerstören und das native Object genau mit dem zu überschreiben, was sonst ein Ember.Object . Also habe ich den Namen in der Deklaration und Verwendung in so etwas wie const EmberObject = Ember.Object geändert und alles ist in die richtige Richtung gegangen. Ich würde es auch nicht als Bug-Bug bezeichnen, daher stimme ich Ihnen in so ziemlich allem zu, was Sie oben geschrieben haben: stick_out_tongue_winking_eye:

@Exelord @acorncom @alvincrespo @arenoir @asvny @bjornharrtell @brunowego @carlbennettnz @dustinfarris @jakeleboeuf @locks @lrdiv @nightsh @rwjblue @ sly7-7 @tarikozket ist dies noch ein Problem das, was denkst du?

Wenn Sie in der aktuellen Version von Ember reproduzieren können, können Sie sie vorerst wieder öffnen.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen