state provider and route provider in angularJS

104,796

You shouldn't use both ngRoute and UI-router. Here's a sample code for UI-router:

repoApp.config(function($stateProvider, $urlRouterProvider) {
  
  $stateProvider
    .state('state1', {
      url: "/state1",
      templateUrl: "partials/state1.html",
      controller: 'YourCtrl'
    })
    
    .state('state2', {
      url: "/state2",
      templateUrl: "partials/state2.html",
      controller: 'YourOtherCtrl'
    });
    $urlRouterProvider.otherwise("/state1");
});
//etc.

You can find a great answer on the difference between these two in this thread: What is the difference between angular-route and angular-ui-router?

You can also consult UI-Router's docs here: https://github.com/angular-ui/ui-router

Share:
104,796
Shah Rukh K
Author by

Shah Rukh K

Everyday, I start a fresh dance of the seven veils.

Updated on May 10, 2020

Comments

  • Shah Rukh K
    Shah Rukh K about 4 years

    Below is my app.js file

    angular
      .module('repoApp', [
        'ngAnimate',
        'ngAria',
        'ngCookies',
        'ngMessages',
        'ngResource',
        'ngRoute',
        'ngSanitize',
        'ngTouch',
        'ui.bootstrap',
        'ui.router'
      ])
      .config(function ($routeProvider) {
        $routeProvider
          .when('/', {
            templateUrl: 'views/main.html',
            controller: 'MainCtrl'
          })
          .when('/about', {
            templateUrl: 'views/about.html',
            controller: 'AboutCtrl'
          })
          .when('/login', {
            templateUrl: 'views/loginPage.html',
            controller: 'loginCtrl'
          })
          .otherwise({
            redirectTo: '/'
          });
      });
    angular
      .module('loginState',['ui.router']);
    

    Below is my states file

    angular
      .module('repoApp')
      .config(function ($stateProvider) {
    
          $stateProvider.state('home1', {
            url:'/home1',
            templateUrl: 'views/modals/test.html'
          })
          .state('secondState',{
            url:'/secondState',
            templateUrl: 'views/modals/secondStateTest.html'
          });
      });
    

    The problem is, using my html i navigate to login page.

    <ul class="nav navbar-nav">
                  <li class="active"><a href="#/">Home</a></li>
                  <li><a ng-href="#/about">About</a></li>
                  <li><a ng-href="#/">Contact</a></li>
                  <li class="loginShift"><a ng-href="#/login">Login</a></li>
                </ul>
    

    but I am trying to hit the state as soon my flow hit the controller

    angular.module('repoApp')
      .controller('loginCtrl', function ($scope,$modal,$state) {
        $scope.awesomeThings = [
          'HTML5 Boilerplate',
          'AngularJS',
          'Karma'
        ];
        $state.go('home1');
        $scope.openDialog = function () {
            $modal.open({
              keyboard: 'static',
              templateUrl: 'views/login/loginCred.html',
            });
          };        
      });
    

    but I am not able to hit the home state. If I change my states file i.e

    $stateProvider.state('home1', {
                url:'/login',
                templateUrl: 'views/modals/test.html'
              })
    

    here I changed URL. It works fine now.

    I have a template from where I want to navigate to a next state

    <div>
    <button data-ng-click="openDialog()">open ME!</button>
    <div><a ui-sref="secondState">click here</a></div>
    </div
    

    but as soon I click this anchor tag it navigates me back to home page. ie not to the state I intend to go. The main issue is URL(i guess) any help will be appreciated.