AngularJS控制器索引页面之间的导航

时间:2014-07-16 11:32:17

标签: javascript angularjs asp.net-mvc-3

我是AngularJs的新手。我的MVC3应用程序中有2个控制器,带有相应的索引页面。

假设第一个控制器为LoginController,另一个为DashboardController

每个索引页面都有不同的布局。如果登录成功,我想导航到DashboardController index.cshtml页面。如何借助angularjs DashboardController从当前LoginController索引页面导航到$routeprovider索引页?

app.js

angular.module('testModule', ['ngRoute'])
.controller('LoginController', function ($scope, $http, $location) {
$scope.Authenticate = function () {
    $scope.Login.UserId = 2;
    $scope.Login.RoleId = 501;
    $scope.Login.AcctPassword = 'sss';
    var postform = JSON.stringify($scope.Login);
    if ($scope.Login.Username != '') {

        $http.post('/Login/Authenticate', postform).success(function (data) {
            if (data.Status == false) {
                alert(data.errorMessage);
            }
            else {
                $location.path("/Dashboard");
            }
        });
    }
};
})
.config(['$routeProvider', '$locationProvider',
  function ($routeProvider, $locationProvider) {

    $routeProvider
   .when('/', {templateUrl: '/Login/Index.cshtml',controller: 'LoginController'  })
   .when('/Temp', {templateUrl: '/Login/TempView.cshtml',controller: 'LoginController' })
   .when('/Dashboard', { templateUrl: '/Dashboard/Listing', controller: 'DashboardController' })
   .otherwise({ redirectTo: '/' });


    $locationProvider.html5Mode(true); //Remove the '#' from URL.
  } ]);

仪表板是我项目中的一个区域。列表是仪表板区域中的控制器,带有index.cshtml页面。

1 个答案:

答案 0 :(得分:0)

我宁愿将$window注入您的LoginController。 然后,您可以在控制器中定义此方法:

$scope.go = function(path = "#/Dashboard/") {
  return $window.location = path;
};

然后在模板中使用它:

<ANY ng-click="go()"/>
<ANY ng-click="go('#/Temp/')"/>