2016-04-27 13 views
1

finde ich zu einer Route zu navigieren versuche wie folgt:Aurelia: nicht Namen Strecke

add.js:

import {HttpClient} from "aurelia-http-client"; 
import $ from "jquery"; 
import {Router} from "aurelia-router"; 

const baseURI = "/posts"; 

export class Add { 

    constructor() { 
     this.router = new Router(); 
    } 

    add() { 
     let url = this.router.generate("home"); 
     this.router.navigate(url); 
    } 
} 

app.js:

configureRouter(config, router) { 
    this.router = router; 
    config.map([ 
     { 
      route: ["", "home"], 
      moduleId: "./home", 
      title: "Home", 
      name: "home", 
      nav: true 
     }, 
     { 
      route: "add", 
      moduleId: "./add", 
      title: "Add New Post", 
      name: "Add", 
      nav: true 
     } 
    ]); 
} 

I bekomme ich diesen Fehler: A route with name 'home' could not be found. Check that name: 'home' was specified in the route's config.

Ist es, weil die Route für zu Hause in einem Array ist? Ich habe versucht, "" und "Home" zu trennen, aber der Fehler bleibt bestehen.

+0

versuchen: 'this.router.navigateToRoute (‚Heimat‘);' –

+0

ich den gleichen Fehler mit '' navigateToRoute erhalten – akshayKhot

+0

Welche Zeile wirft den Fehler auf? Erster oder zweiter? \t den vollständigen Code von add.js anzeigen. Vielleicht injizierst du den Router nicht richtig –

Antwort

0

Sie müssen den Router injizieren. Dabei gibt der Rahmen Ihnen die gleiche Instanz, die konfiguriert wurde dies durch app.js

import { inject } from 'aurelia-dependency-injection'; //or aurelia-framework 
import {HttpClient} from "aurelia-http-client"; 
import $ from "jquery"; 
import {Router} from "aurelia-router"; 


@inject(Router) 
export class Add { 

    constructor(router) { 
     this.router = router; 
    } 

    add() { 
     //let url = this.router.generate("home"); 
     this.router.navigateToRoute("home"); 
    } 
} 
+0

Oh, ich sehe das Problem jetzt. Ich habe mich gefragt, wie die beiden Router voneinander wissen. Noch eine Sache, ich bekomme einen Syntaxfehler auf '@inject (Router)' Linie, muss ich irgendeine Abhängigkeit in jspm hinzufügen, usw.? – akshayKhot

+0

Nein, das tust du nicht. Versuchen Sie, 'inject} von' aurelia-framework 'zu importieren; ' –

+0

Ich habe das mit' aurelia-framework 'an erster Stelle benutzt. Aber das ist jetzt behoben, musste hinzufügen "es7.decorators", "in babelOptions in der' config.js' – akshayKhot