Tôi đang tạo một ứng dụng có trạng thái động và đôi khi tôi cần phải giải quyết tên trạng thái từ url.ANGULAR-UI-ROUTER: Giải quyết trạng thái từ URL
ví dụ: Tôi có /dashboard/user/12268
và tôi cần nhận trạng thái 'dashboard.user'
.
Có cách nào để thực hiện điều này với các công cụ được cung cấp bởi ui-router
không? Tôi không thể tìm hiểu cách thực hiện việc này ngay bây giờ ...
Tôi đang tạo ứng dụng có tải mô-đun động với requireJS. Lúc đầu không có vấn đề gì vì người dùng được gửi đến trạng thái đăng nhập. Sau khi đăng nhập, tôi sử dụng chỉ cần tải các trạng thái mà người dùng có quyền truy cập. Nhưng khi người dùng tải lại trang, tôi tải lại mô-đun và cần phải giải quyết url tới trạng thái và có sự cố. Tôi đã bắt đầu thử với urlMatcherFactory nhưng không thể giải quyết chúng.
Trạng thái được tải sau độ phân giải URL.
Dòng chảy được (sau khi refresh trang http://localhost:8090/index.html#/dashboard/user/12268
):
- bootstrap ứng dụng (không có bang)
- vào thời điểm này,
ui-router
đã được tải - có được trạng thái người dùng có quyền truy cập đến và đăng ký chúng (các tiểu bang này được đăng ký sau giai đoạn cấu hình)
- tìm hiểu xem tôi có một tiểu bang khớp với url đã cho để chuyển hướng đến đó hay không. Đây là nơi tôi bị kẹt.
Để tải trạng thái sau khi khởi động ứng dụng, tôi đã sử dụng biến thể Ben Nadel's solution bao gồm các trạng thái và hằng số.
data-main
trong RequireJS tôi có mã khởi tạo này:
require.config({
// REQUIREJS CONFIGURATION
});
require(['app'], function (app) {
app.bootstrap(document);
var ng = angular.injector(['ng']);
var $window = ng.get('$window')
var $q = ng.get('$q');
var appStorage = $window.localStorage;
var loadedManifests;
try {
loadedManifests = JSON.parse(appStorage.getItem('loadedManifests'));
} catch(e) {
loadedManifests = [];
}
if (!angular.isArray(loadedManifests) || loadedManifests.length === 0) {
$q.all([
app.loadManifest('login/manifest'), //loadMainfest function loads the states for login
app.loadManifest('logout/manifest') //load states for logout
])
.then(function() {
app.injector.get('$rootScope').$evalAsync(function() {
app.injector.get('$state').go('login');
});
});
} else {
var promisesArray = [];
for(var i = 0; loadedManifests[i]; i++) {
promisesArray.push(app.loadManifest(loadedManifests[i])); //load all manifests registered on localstorage
}
$q.all(promisesArray).then(function(){
//TODO: Stuck. Get URL from querystring and resolve to valid state, or redirect to /login
});
}
});
Chức năng loadManifest
đăng ký tất cả sau bootstrap yếu tố trên ứng dụng của tôi (dịch vụ, nhà máy, điều khiển, thiết bị định tuyến, ...).
Nhờ sự giúp đỡ của bạn,
Alx
Hãy đăng những gì bạn có cho đến nay – tim
Tôi đang tạo ứng dụng có tải mô-đun động với requireJS. Lúc đầu không có vấn đề gì vì người dùng được gửi đến trạng thái đăng nhập. Sau khi đăng nhập, tôi sử dụng chỉ cần tải các trạng thái mà người dùng có quyền truy cập. Nhưng khi người dùng tải lại trang, tôi tải lại mô-đun và cần phải giải quyết url đến trạng thái và có sự cố. Tôi đã bắt đầu thử với urlMatcherFactory nhưng không thể giải quyết chúng Trạng thái được tải sau khi độ phân giải URL –
Giao diện người dùng trên giao diện người dùng trong tương lai có thể quản lý kịch bản của bạn cho bạn: http://christopherthielen.github.io/ui-router -extras/#/future –