AngularJs - 通过ui-sref传递参数时获取未定义的对象

时间:2016-10-27 06:55:07

标签: javascript jquery angularjs angular-ui-bootstrap

您好我对angularjs很新,这是我的代码

HTML

<table ng-table="tctrl.tableEdit" class="table table-striped table-vmiddle" show-filter="true">
  <tr ng-repeat="w in $data"  ng-class="{ 'active': w.$edit }">
    <td data-title="'Company name'" filter="{ 'cl_company_name': 'text' }" sortable="'cl_company_name'">
      <a ui-sref="clients.client-detail({ clientId: w.cl_id })"><span ng-if="!w.$edit">{{ w.cl_company_name }}</span></a>
      <div ng-if="w.$edit"><input class="form-control" type="text" ng-model="w.cl_company_name" /></div>
    </td>
  </tr>
</table>

controller.js

.controller('TabsClientCtrl', function ($scope, $window, $stateParams) {

   $scope.clID = $stateParams.clientId
   alert($scope.clID)
})

state.js

.state ('clients', {
    url: '/clients',
    templateUrl: 'views/common.html'
})

.state('clients.client-detail', {
    url: '/client-detail',
    templateUrl: 'views/client-detail.html',
    resolve: {
         ...
    }
})

当我点击td中的公司名称时,我得到了未定义的警报。使用ui-sref传递参数的正确方法是什么?

2 个答案:

答案 0 :(得分:1)

您的路线有两件事要改变,

1)将id参数添加到路径网址

url: '/client-detail/:clientId',

:clientId需要告诉ui-router您通过该路线发送了一些参数。

2)添加控制器:

controller: 'TabsClientCtrl

当您在该控制器中使用这些参数时,需要控制器。

.state ('clients', {
    url: '/clients',
    templateUrl: 'views/common.html'
})

.state('clients.client-detail', {
    url: '/client-detail/:clientId',
    templateUrl: 'views/client-detail.html',
    controller: 'TabsClientCtrl,
    resolve: {
         ...
    }
})

答案 1 :(得分:0)

请改变您的路线

.state('clients.client-detail', {
    url: '/client-detail/?clientId',
    templateUrl: 'views/client-detail.html',
    resolve: {
         ...
    }
})

.state('clients.client-detail', {
    url: '/client-detail/:clientId',
    templateUrl: 'views/client-detail.html',
    resolve: {
         ...
    }
})

根据您的要求