2016-03-24 55 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> 

还做改变你的路线介绍网址参数的方式做手动重定向。

代码

.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

另外,正如指出的其他答案,您的路由ID参数有一个不正确的语法。 –