Backbone.js Router Anpassung der optionalen Parameter

7

Ich versuche, einen Backbone-Router zu erstellen, der optionale Parameter abgleichen kann.

Betrachten Sie den folgenden Code:

%Vor%

Wenn ich zu URL abc.com/ # / jobs / p104 / navigiere, ist der Seite Parameter 104 . Wenn Sie jedoch zu abc.com/ # / jobs / job / 93 navigieren, ist der Parameter job_id undefiniert , jedoch die Seite < Der Parameter / strong> ist 93 .

Der Backbone-Router stimmt also die Hash-Parameter der Routen grundsätzlich nach der Reihenfolge und nicht nach dem Namen ab.

Ich weiß, die Lösung wäre, ein * splat zu verwenden und die Parameter mit Regex zu teilen, aber ich kann nicht scheinen, dass der Regex-Teil funktioniert (mein Regex ist ziemlich rostig). Kann mir bitte jemand helfen?

Wenn es eine bessere Lösung als die Verwendung von * splat gibt, kann jemand bitte teilen?

    
peter 10.03.2012, 18:32
quelle

3 Antworten

21

Anstatt sich mit Regex zu beschäftigen, wäre es einfacher und weniger fehleranfällig, nur eine zweite Funktion zu haben. Sie müssen wahrscheinlich all dies in einer Initialisierungsfunktion für this.jobs zu binden.

%Vor%     
abraham 11.03.2012 03:19
quelle
2

probiere das (single regex, funktioniert bei all deinen Eingabeformaten)

%Vor%

** stimmt zuerst mit dem pNNN-Segment überein, wenn es dort ist, und verwendet einen nicht gierigen Quantifizierer mit Punkt . , der alles .*? essen kann, um die Zeichenfolge nacheinander hochzukrabbeln, so dass die zweite Gruppe (gerade / NNN) wird auch übereinstimmen, wenn vorhanden. Die (?: exp ) sind nicht einfangende Gruppen, sie gruppieren sich, aber sie "erinnern sich" an nichts.

    
sweaver2112 11.03.2012 03:45
quelle
0

Wenn Sie eine Menge davon tun, können Sie einen Blick auf dieses Muster um es ordentlich aufzuwickeln. Für genau diese sollten jedoch die folgenden Regexs es tun:

%Vor%

Sie können dann String.match mit den von Ihnen abgerufenen Splats verwenden, um die fraglichen URL-Fragmente zu extrahieren. Verwenden von Zeichenfolgen anstelle einer splat -Variable:

%Vor%     
rjz 10.03.2012 19:58
quelle