Tôi vừa mới bắt đầu học angularj và tôi đang sử dụng angular-ui-router. Tôi đang cố gắng gửi dữ liệu từ trạng thái này sang trạng thái khác bằng cách sử dụng $state.go
nhưng tôi không thành công. Dưới đây là những gì tôi có cho đến thời điểm này:Góc giao diện người dùng-Router truyền dữ liệu giữa các trạng thái có chức năng đi không hoạt động
Tôi chưa bao gồm html một cách có chủ ý vì tôi cho rằng nó không cần thiết nếu cần, vui lòng cho tôi biết và tôi sẽ thêm nó.
Tôi đã cấu hình trạng thái của tôi như sau:
$stateProvider
.state('public', {
abstract: true,
templateUrl: 'App/scripts/main/views/PublicContentParent.html'
})
.state('public.login', {
url: '/login',
templateUrl: 'App/scripts/login/views/login.html',
controller: 'loginCtrl'
})
$stateProvider
.state('private', {
abstract: true,
templateUrl: 'App/scripts/main/views/PrivateContentParent.html'
})
.state('private.visits', {
url: '/visits',
views: {
'main': {
controller: 'visitsListCtrl',
templateUrl: 'App/scripts/visits/views/VisitsList.html'
}
}
});
Khi tôi LoginController
được gọi nó sẽ thực thi mã bên dưới:
loginModule.controller('loginCtrl', ['$state', function ($scope, $state) {
$state.go('private.visits', { name : "Object"});
}]);
Khi trang private.visits
đang hoạt động, tôi đang cố gắng để in số $stateParams
:
visitsModule.controller('visitsListCtrl', ['$stateParams',
function ($stateParams) {
console.log($stateParams);
}]);
Vì mọi thứ nhà nước $ stateParams là một đối tượng trống. Tôi mong đợi nó để chứa các đối tượng tôi đã thông qua trong loginCtrl.
EDIT
Dường như nếu private.visits
url có dạng url này '/visits/:name'
và tôi cũng thêm params sở hữu: [ "name"] Tôi được tiếp cận với các đối tượng tôi gửi từ trạng thái public.login
. Tác dụng phụ là các thông số được thêm vào url hợp lý.
Tôi đã thử làm điều tương tự với trạng thái con không có url và trong trường hợp này có vẻ như tôi không có quyền truy cập vào thông số tôi đã chuyển từ public.login
.
Làm cách nào để gửi dữ liệu ở trạng thái con?
Đây là câu trả lời hay với ví dụ rõ ràng, phải là mẫu được chấp nhận. – psp
Chúng ta có thể vượt qua một đối tượng thay vì các kiểu dữ liệu nguyên thủy không? –
Không, bạn có thể sử dụng JSON.stringify nhưng tôi khuyên bạn nên sử dụng một nhà máy để chia sẻ dữ liệu. –