2016-03-24 1 views
1

Ich habe eine Liste von Mitarbeitern. Jetzt möchte ich jeden Datensatz mit einem Mitarbeiterprofil verknüpfen. Aber egal, was ich tue, es funktioniert nicht.AngularJs nicht durch

Dies ist mein Code:

<tr ng-repeat="employee in homeCtrl.employees" ng-href="#/werknemer/{{employee.EmployeeId}}"> 
    <td>{{ employee.Role }}</td> 
    <td>{{ employee.Company }}</td> 
    <td>{{ employee.FirstName }}</td> 
    <td>{{ employee.LastName }}</td> 
</tr> 

Meine Seite Quelle wie folgt aussieht:

<tr ng-repeat="employee in homeCtrl.employees" ng-href="#/werknemer/1" class="ng-scope" href="#/werknemer/1"> 

Routen-Datei:

.when('/werknemer/{id}', { 
     templateUrl: '../views/employee.html', 
     controller: 'employeeController', 
     controllerAs: 'employeeCtrl' 
    }) 

Ich bin mit Angular 1.5.2.

Antwort

2

href Attribut funktioniert nur auf a (Anker) Tag. Hier versuchen Sie es auf tr, die offensichtlich nicht funktionieren wird.

Sie müssen durch den Aufruf Ereignis manuelle Umleitung tun auf ng-click

Markup

<tr ng-repeat="employee in homeCtrl.employees" ng-click="doRedirect(employee.EmployeeId)"> 
    <td>{{ employee.Role }}</td> 
    <td>{{ employee.Company }}</td> 
    <td>{{ employee.FirstName }}</td> 
    <td>{{ employee.LastName }}</td> 
</tr> 

Auch die Art und Weise ändern Sie URL-Parameter in Route einzuführen.

-Code

.when('/werknemer/:id', { //changed `/{id}` to `/:id` 
    templateUrl: '../views/employee.html', 
    controller: 'employeeController', 
    controllerAs: 'employeeCtrl' 
}) 

-Controller

//ideally this method can be easily moved out to service, will act as a redirection logic 
$scope.doRedirect = function(id){ 
    $location.path('#/werknemer/'+id) 
} 
2

sollte Ihr templateUrl sein

templateUrl: '/views/employee.html', 

Winkel bei der Projektwurzel sehen immer, deshalb haben Sie keine n tun um eine Ebene zu durchqueren.

andere als das. Es wird nicht empfohlen, href zu verwenden. Sie sollten ng-click verwenden, um auf eine Weiterleitungsfunktion zu zeigen.

z.

<anyElement ng-click='goTo("#/werknemer/1")'></anyElement> 

... 

$scope.goTo = function(route){ 

    //depending on wether the route param contains the leading "#" you might want to use either of the following. 

    $window.location.assign(route); 

    OR 

    $location.path(route); 
} 
+0

auch, wie die andere Antwort wie angegeben, Ihre ID-Parameter in Ihrer Route hat eine falsche Syntax zu ihm. –