Helpex - Trao đổi & giúp đỡ Đăng nhập
6

Tôi đang sử dụng bộ định tuyến giao diện người dùng trong dự án của mình. Trang chủ ứng dụng của tôi bao gồm 4 tab, mỗi tab định tuyến đến một mẫu khác nhau. Đây là mã định tuyến hiện tại của tôi, tôi đang sử dụng forEach để tạo 6 tuyến đường.

['Draft','Assigned','InProgress','Completed','Rejected','All'].forEach(function (val) {
        $stateProvider.state({
            name: 'root.jobs.list.' + val.toLowerCase(),
            url: '/' + val.toLowerCase(),
            views: {
                'currentTab': {
                    templateUrl: 'adminworkspace/jobs',
                    controller: 'JobsController'
                }
            },
            data: {
                userJobsStatus: val
            }
        });
    });

Theo mặc định khi người dùng đăng nhập, nó sẽ chuyển đến "root.jobs.list.draft". Làm thế nào để chuyển hướng đến một trạng thái nhất định dựa trên vai trò của người dùng đã đăng nhập (Quản trị viên, Người dùng, Thư ký, v.v.). Nếu muốn chuyển hướng tất cả người dùng thuộc vai trò "Kỹ sư" hoặc "Kỹ sư trưởng" đến "root.jobs.list.inprogress"

Tôi ban đầu có cái này trong bộ điều khiển, nhưng như bạn thấy, nó không hoạt động, vì mỗi lần tôi nhấp vào một tab, nó luôn định tuyến trở lại "root.jobs.list.inprogress"

    if (user !== undefined) {
        if (user.BusinessRole == "Engineer" || user.BusinessRole == "Lead Engineer")
            $state.go('root.jobs.list.inprogress');
    }
6 hữu ích 0 bình luận 2.2k xem chia sẻ
6

Tôi đã phải giải quyết điều đó:

Tôi đã đăng ký một trạng thái chỉ được sử dụng để xử lý trang mặc định dựa trên vai trò.

        $urlRouterProvider.otherwise("/");
        $stateProvider.state("default", {
            url:"/",
            templateUrl: "app/core/home/default.html",
            controller: "DefaultController"
        });

Bộ điều khiển chỉ đơn giản là:

(function () {
    "use strict";

    angular.module("core").controller("DefaultController", [
        "$rootScope",
        "$state",
        "roles",
        function ($rootScope, $state, roles) {
            if ($rootScope.hasPermission(roles.SomeRoleName)) {
                $state.go("someStateName");
            } else if ($rootScope.hasPermission(roles.SomeRoleName)) {
                $state.go("someStateName");
            }
        }
    ]);
})();
6 hữu ích 0 bình luận chia sẻ
1

Nếu liên kết của trạng thái mặc định giống nhau cho mỗi vai trò, ví dụ / người dùng / nhà cho cả quản trị viênngười dùng . Một điều chúng ta có thể làm là hiển thị các mẫu html khác nhau ở trạng thái mặc định của ứng dụng dựa trên vai trò. ui-router cung cấp dịch vụ @stateProvider có các thuộc tính templateProvider và ControllerProvider. Chúng tôi có thể sử dụng chúng để tìm ra mẫu và bộ điều khiển nào chúng tôi muốn sử dụng cho cùng một trạng thái mặc định. Đây là liên kết tài liệu.

1 hữu ích 0 bình luận chia sẻ
loading
Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ javascript angularjs angular-ui-router , hoặc hỏi câu hỏi của bạn.

Có thể bạn quan tâm

loading