AngularJs - 通过 ui-sref 传递参数时得到未定义的对象
AngularJs - getting undefined object when passing parameters through ui-sref
嗨,我是 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 传递参数的正确方法是什么?
请将您的路线更改为
.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: {
...
}
})
根据您的要求
您的路线有两处需要更改,
1) 在路由中添加id参数url
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: {
...
}
})
嗨,我是 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 传递参数的正确方法是什么?
请将您的路线更改为
.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: {
...
}
})
根据您的要求
您的路线有两处需要更改,
1) 在路由中添加id参数url
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: {
...
}
})