Angular JS用于创建母版页子页面效果

时间:2016-06-26 21:13:24

标签: angularjs uiview routing

我的应用程序中需要使用此母版页和子页面功能,它使用HTML并使用AngularJS调用Web Apis。

Functionality to be achieved in HTML5 Angular JS

我在这种情况下遇到路由问题。

用于Route.js中路由的代码:

var MainApp = angular.module('MainApp', ['ngRoute']);
 MainApp.config(function ($routeProvider, $locationProvider) {
    $routeProvider
    .when('/', {
        templateUrl: '../partials/DashboardMenu.html',
        controller: 'DashboardMain'
    })
    .when('/Holidays', {
        templateUrl: '../partials/Holidays.html',
        controller: 'Holidays'
    })
    .when('/Projects', {
        templateUrl: '../partials/Projects.html',
        controller: 'Projects'
    })

    $locationProvider.html5Mode(true);
    $locationProvider.hashPrefix('!');
});

Dashboard.html

<body ng-app="MainApp" ng-controller="DashboardMainController">
<div class="view-animate-container">
    <div ng-view class="view-animate"></div>
</div>

DashboardMenu.html

<div class="container-fluid btn-group">
<div class="row">
    <a href="../partials/MyProfile.html" class="thumbnail">
        <img src="" alt="My Profile" />
    </a>

    <a href="../partials/Projects.html" class="thumbnail">
        <img src="" alt="Projects List" />
    </a>

    <a href="../partials/Holidays.html" class="thumbnail">
        <img src="" alt="Holidays List" />
    </a>
</div>

以下是我的应用程序中的文件夹结构:

enter image description here

用户从登录页面登录后,应将用户重定向到Dashboard.html,默认子视图为DashboardMenu.html

在登录Service.cs时,当我对用户进行身份验证并尝试使用以下代码段将其重定向到Dashboard.html时,它只是将该网址附加到Dashboard.html。

$location.path('DashboardMenu.html')

为此,我在Dashboard.html和locationProvider.html5mode和hasprefix中添加了<base href="/" />,但对我来说没有任何效果。请让我知道我失踪的地方..

2 个答案:

答案 0 :(得分:0)

听起来您正在尝试使用ngRoute实现某种版本的嵌套视图,但不支持这种视图。我建议使用支持嵌套状态的ui-router

答案 1 :(得分:0)

$location.path()应设置为路由配置中匹配的url值,而不是模板路径

尝试更改

$location.path('DashboardMenu.html')

$location.path('/')

与你的href值相同....应该是url而不是模板

Chnge

<a href="../partials/Projects.html" class="thumbnail">

<a href="/Projects" class="thumbnail">

注意:确保将服务器配置为使用html5Mode

您还需要从已在路由配置中声明的控制器的路由使用的模板中删除ng-controller。否则,最终会有2个控制器运行实例

可能建议你学习更多教程