根据angularjs中的位置路径使用href或sref

时间:2017-12-01 16:37:43

标签: javascript angularjs node.js angular-router

我有一个模块化的AngularJS1.5应用程序,模块化的意思是它曾经是一个单片前端,我把它分成不同的应用程序,每个应用程序在Kubernetes中运行。

从现在开始,它已被拆分,所有应用程序共享我已经打包到NPM中的公共和核心模块,并且它将被添加到Jenkins管道中的每个模块中。

所有应用程序共享相同的UX样式前端,包括它的导航窗格。现在,要在模块之间切换,用户只需转到导航窗格并单击所需的链接。

我想要做的是,如果用户已经在foo模块中说出并且想要导航到FOO1,它仍然在父FOO模块执行和sref导航中,但是如果它在FOO模块中并且想要去到BAR模块执行href。

为了更好地解释这一点,这是我目前的情况:

www.domain.com/foo

导航栏

|->FOO
  |-->FOO1
  |-->FOO2
  |-->FOO3
|->BAR
  |-->BAR1
  |-->BAR2
  |-->BAR3

这是我在navigation.provider.js

中的代码
(function (angular) {
    'use strict';

    angular.module('xxxx.core.layout')
        .provider('xxxx.core.layout.NavigationProvider', NavigationProvider);

    NavigationProvider.$inject = [
        'xxxx.core.states.StatesConstant',
        'xxxx.core.auth.PermissionConstant',
        '$windowProvider',
        '$location',
        'xxxx.core.auth.PermissionTypeConstant',
        'xxxx.core.features.FeaturesConstant'
    ];

    function NavigationProvider(StatesConstant, PermissionConstant, $windowProvider, $location, PermissionTypeConstant, FeaturesConstant) {
        this.$get = Navigation;

        function Navigation() {
            var $window = $windowProvider.$get();
            return [
text: 'FOO',
                    permission: [
                        PermissionConstant.XXXX,
                        PermissionConstant.XXXX_EDIT
                    ].toString(),
                    permissionType: PermissionTypeConstant.AT_LEAST_ONE,
                    children: [
                        {
                            text: 'User Management',
                            //sref: StatesConstant.USER_MANAGEMENT_LIST,
                            href: $window.location.protocol + '//' + $window.location.hostname + '/foo/um/list',
                            permission: PermissionConstant.XXXX
                        },
                        {
                            text: 'Active Features',
                            //sref: StatesConstant.TOGGLE_ADMINISTRATOR,
                            href: $window.location.protocol + '//' + $window.location.hostname + '/foo/toggle',
                            permission: PermissionConstant.XXXX
                        },
                        {
                            text: 'Customer List',
                            //sref: StatesConstant.XXXX_LIST,
                            href: $window.location.protocol + '//' + $window.location.hostname + '/foo/customer-list',
                            permission: PermissionConstant.XXXX_EDIT
                        }
                    ]

我想要实现的是,它是这样的:

let $location = $location.path();
if($location = "/foo"){
sref: StatesConstant.USER_MANAGEMENT_LIST,
}else{
href: $window.location.protocol + '//' + $window.location.hostname + '/foo/um/list',
}

任何帮助都会非常感激。

干杯!

1 个答案:

答案 0 :(得分:0)

我在这里使用angular-ui-router和嵌套状态。

$form1= New-Object System.Windows.Forms.Form
$textBox1 = New-Object System.Windows.Forms.TextBox
$contextMenuStrip1 = New-Object System.Windows.Forms.ContextMenuStrip

$contextMenuStrip1.Items.Add("Item 1")
$contextMenuStrip1.Items.Add("Item 2")

$textBox1.ShortcutsEnabled = $false
$textBox1.ContextMenuStrip = $contextMenuStrip1

$form1.Text="Context Menu for TextBox"
$form1.Controls.Add($textBox1)

$form1.ShowDialog()

希望这就是你想要的!