2015-05-26 7 views
0

Я создал простой веб-сайт с конфигурацией маршрутов. Я использую JavaScript для моих модулей и контроллеров, но маршрутизация не работает.Маршрутизация Angularjs не работает с контроллером и моделью с использованием IIF funtion

Он работает только тогда, когда я печатаю Localhost по умолчанию, как этот http://localhost:18689, но если попытаться http://localhost:18689/maindashboard любой маршрут, или $location.path('/addrequest') я получаю 404.

Может быть IIF быть проблема?

Мои модули это:

(function() { 
    "use strict"; 

    var clientAppModule = angular.module('clientAppModule', ["ngRoute", "ui.bootstrap", "ngResource"]); 

    clientAppModule.config(function ($routeProvider, $locationProvider) { 
    $routeProvider 
     .when("/maindashboard", { 
      templateUrl: "app/maindashboard/maindashboard.html", 
      controller: "mainDashboardController" 
     }) 
     .when("/addrequest", { 
      templateUrl: "app/addrequest/addrequest.html", 
      controller: "addRequestController" 
     }) 
     .otherwise({ 
      redirectTo: "/maindashboard" 
     }); 

     $locationProvider.html5Mode(true); 

    }); 
}()); 

Индекс страницы:

<!DOCTYPE html> 
<html ng-app="clientAppModule"> 
<head> 
    <title></title> 
    <!-- CSS --> 
    <link href="Content/css/font-awesome.css" rel="stylesheet" /> 
    <!-- Libraries --> 
    <script src="Scripts/angular.js"></script> 
    <script src="Scripts/angular-route.min.js"></script> 
    <script src="Scripts/angular-resource.min.js"></script> 
    <script src="Scripts/angular-ui/ui-bootstrap-tpls.min.js"></script> 
    <!-- Code --> 
    <script src="App/clientAppModule.js"></script> 
    <script src="App/Index/indexController.js"></script> 
    <script src="App/MainDashboard/mainDashboardController.js"></script> 
    <script src="App/AddRequest/addRequestController.js"></script> 
    <base href="/"> 
</head> 
<body class="container"> 
    <h1>New Turning Point and Care Point Test Frame</h1> 
    <div> 

     <br /> 3 + 5 = 
     {{3+5}} 
     <br /> 

    </div> 
    <div ng-view> 
    </div> 
</body> 
</html> 

Главный контроллер приборная панель:

(function() { 
    'use strict'; 

    var mainDashboardController = function ($scope) { 
     $scope.TestObj = 'testmainDashboardController'; 
     $scope.showAddRequest = function() { 
      $location.path('/addrequest'); 
     }; 
    }; 

    var app = angular.module('clientAppModule'); 
    app.controller("mainDashboardController", mainDashboardController); 
})(); 

Контроллер addrequest похож только тест

+1

Вы настроили конфигурацию переписывания URL-адресов требуемой [серверной стороны] (https://docs.angularjs.org/guide/$location#server-side)? В разделе [UI Router FAQ] есть хорошее руководство для различных HTTP-серверов (https://github.com/angular-ui/ui-router/wiki/Frequently-Asked-Questions#how-to-configure-your-server- to-work-with-html5mode) – Phil

+0

Нет. Я не установил его, но маршрутизация не работает даже для события перенаправления контроллера панели управления, которое не связано с копированием URL-адреса вставки. Также я тестирую это на localhost – Devsined

ответ

1

Вашего вопроса в том, что вы упускаете параметр $location в mainDashboardController

var mainDashboardController = function ($scope, $location)

Кроме того, если вы планируете минимизацию код, который вы должны объявлять зависимости при создании контроллера, используя либо встроенный синтаксис

app.controller('mainDashboardController', ['$scope', '$location', mainDashboardController]); 

или угловой инжектор

mainDashboardController.$inject = ['$scope', '$location'] 

Таким образом, ш Если миниатюра изменит ваши имена параметров на a или b или что бы то ни было, угловые узнают, какими они должны быть.