這是我的HTML的一部分:
<td>
<button class="btn btn-primary" ui-sref="edit({id: v.customerId})" ui-sref-opts="{reload: true}">Edit</button>
<button class="btn btn-primary" ng-click="removeRow(v.firstName);">Delete</button>
</td>
,你可以看到我傳遞customerId
作爲和id
是在URL
app.js:
var app = angular.module('webtrekkApp', ['ngSanitize', 'ui.router']);
app.config(function ($stateProvider, $urlRouterProvider) {
$stateProvider
.state('edit', {
name: 'edit',
url: '/users/:id/edit',
templateUrl: './views/customer-details.html',
controller: 'ctrl',
params: {
obj: null
}
});
});
ctrl.js:
//If 'initData' isn't set, then set it up by default
if(!localStorage.getItem('initData')) {
$window.localStorage.setItem('initData', JSON.stringify($scope.initData));
}
$scope.retrievedData = JSON.parse($window.localStorage.getItem('initData'));
for (var i = 0; i < $scope.retrievedData.length; i++) {
$scope.retrievedData[i].birthdayDate = new Date().getFullYear() - new Date($scope.retrievedData[i].birthdayDate).getFullYear();
}
$scope.sortedType = 'firstName';
$scope.sortedReverse = false;
//Remove Rows and Update localStorage Key Values
$scope.removeRow = function(name) {
var index = $scope.retrievedData.findIndex(function(obj) {return obj.firstName === name});
$scope.retrievedData.splice(index, 1);
window.localStorage.setItem('initData', JSON.stringify($scope.retrievedData));
};
$state.go('edit', {obj: $scope.retrievedData});
所以我是一個表格,當用戶點擊'編輯'時,我需要THAT object
傳遞給ui.router,以便我可以在customer-details.html
中顯示它。我該怎麼做?我在這裏做錯了事。我已經閱讀了關於ui.router的所有文檔,但不知道應該在初始控制器還是在其他控制器中定義$state.go
。我也跟着這個問題,但不能得到它的工作:How to pass custom data in $state.go() in angular-ui-router?
請參閱https://stackoverflow.com/questions/19516771/how-to-send-and-retrieve-parameters-using-state-go-toparams-and-stateparams –
'params:{'obj':null }'你有沒有嘗試在app.config->狀態下添加像這樣的參數。 –
這是我收到的消息:'angular-ui-router.min.js:9錯誤:參數值無效狀態'編輯'' – tholo