单击AngularJS 1.5.0重定向到控制器

时间:2016-02-25 13:32:52

标签: javascript angularjs angularjs-ng-repeat

我有一个使用ng-repeat填充表格的页面。该表显示了公司列表。在表格行上单击我想打开另一个页面,其中包含用于编辑所选公司的表单。

这是html页面

<table>
    <tr>
        <th>Name</th>
        <th>Address</th>
    </tr>
    <tr ng-repeat="company in companies">
        <td>{{company.companyName}}</td>
        <td>{{company.companyAddress}}</td>
    </tr>
</table>

这是应该处理点击请求的控制器

angular.module('companyApp.companyForm', ['ngRoute', 'ngResource'])
    .config(['$routeProvider', function ($routeProvider) {
        $routeProvider.when('/updateCompany/:companyId', {
            templateUrl: 'app/companyForm/companyForm.html',
            controller: 'UpdatedCompanyController'
        });
    }])
    .controller('UpdatedCompanyController', ['$scope', '$resource',
        function ($scope, $resource) {

        }]);

我尝试过使用

$location.url("#/updateCompany").search({id:company.id})

但只创建了一个网址。

我也尝试使用

window.location.href = //...

但是,当我点击表格项目时,我又被重定向到默认页面。

如何重定向到表格行上的新页面?

1 个答案:

答案 0 :(得分:0)

基本上$location.url("#/updateCompany").search({id:company.id})会生成URL,如#/updateCompany?id=1&amp;它与$routeProvider中提供的任何.when条件都不匹配(当我查看有问题的配置时,它什么都不做)。

这可以通过创建URL以匹配$routeProvider

中已注册路线的模式来解决
$location.url("#/updateCompany/"+company.id)

或者您可以使用$location.path来解决您的问题

$location.path('/updateCompany/'+ company.id);

<强>标记

<tr ng-repeat="company in companies" ng-click="redirect(company)">
    <td>{{company.companyName}}</td>
    <td>{{company.companyAddress}}</td>
</tr>

<强>代码

$scope.redirect = function(company){
    $location.path('/updateCompany/'+ company.id);
};