Angular:单个网址的多个模板?

时间:2015-11-16 05:36:14

标签: angularjs angular-ui-router

我有一位经理'所有角色的用户(当前adminuser)使用的面板。

主要问题是我想限制加载任何管理员HTML视图(我将在后端进行简单检查,如果他们没有被授权加载,则会返回401模板)。我需要隐藏的HTML中有很多东西。

我的问题是,现在有几个部分有2个视图。

/settings,当您管理员时,用户会将/settings显示为完全不同的视图。

控制器实际上是共享的,因为控制器代码非常接近,但HTML非常不同。

我目前正在使用angular-router,但我也检查了ui-router,我也不知道如何构建。我花了很多时间看着UI路由器,虽然它看起来很神奇,但我不知道最好的解决方法。

我有大约10个路径/视图需要属于每个角色,这将是不同的。

1 个答案:

答案 0 :(得分:1)

发出全局变量如何说当前用户是admin:

private const string CharList = "0123456789abcdefghijklmnopqrstuvwxyz";
        public static String Encode(long input)
        {
            if (input < 0) throw new ArgumentOutOfRangeException("input", input, "input cannot be negative");

            char[] clistarr = CharList.ToCharArray();
            var result = new Stack<char>();
            while (input != 0)
            {
                result.Push(clistarr[input % 36]);
                input /= 36;
            }
            return new string(result.ToArray());
        }

string OutputString = Encode(Int64.Parse("0.04036483168558814"));
or
string OutputString = Encode(Int64.Parse("0.04036483168558814".Substring(2)));

然后在路径定义中检查该变量:

<script type="text/javascript">window.isAdmin = true</script>

另一种方法是让Web服务器根据用户的角色为同一个视图URL提供不同的视图。据我了解你已经可以做到了,对吧?

...
when('/setting', {
  templateUrl: isAdmin ? 'templates/admin/setting.html' : 'templates/user/setting.html',
  controller: 'SettingController'
})
...