2016-03-24 5 views
1

У меня есть список сотрудников. Теперь я хочу связать каждую запись с профилем сотрудника. Но независимо от того, что я делаю, это не работает.AngularJs не связывается с

Это мой код:

<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> 

Мой исходный код страницы выглядит следующим образом:

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

Маршруты Файл:

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

Я использую Угловое 1.5.2.

ответ

2

href атрибут будет работать только на отметке a (якорь). Здесь вы пробуете его на tr, который, очевидно, не сработает.

Вам нужно сделать вручную переадресацию по вызывающему событию на ng-click

разметке

<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> 

сделать также изменить способ введения параметра URL-адрес в маршруте.

Код

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

Контроллер

//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

ваш templateUrl должен быть

templateUrl: '/views/employee.html', 

угловой всегда смотреть в корень проекта, поэтому вы не будете делать не п чтобы пройти на один уровень.

кроме этого. не рекомендуется использовать href, вы должны использовать ng-click, чтобы указать на некоторую функцию перенаправления.

например.

<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

также, как и другой ответ, как указано, ваш идентификационный параметр на вашем маршруте имеет неправильный синтаксис. –