CallMeNorm
CallMeNorm

Reputation: 2605

Angular-ui-router doesn't have a default state and can't transition from it

I having some problems with the the angular-ui-router. When I click on a ui-sref I get the message

"Error: Could not resolve 'X' from state ''
transitionTo@http:/

Where X is the state in site-header that I'm trying to go to.

I think this means that there isn't a default state, but I'm not sure. In any case here are what I think are the relevant file parts:

index.html

<div class="container" ng-cloak>
    <a ui-sref="home"></a>
    <div ui-view></div>
</div>

app.config.js

angular.module('fTA')
    .config(function($urlRouterProvider, $stateProvider) {
        $urlRouterProvider.otherwise('/');

        $stateProvider.state('home', {
            url: '/',
            template: '<p>This is home view</p>'
        });

        $stateProvider.state('login' {
            url: '/login',
            templateUrl: '/views/login.html',
            controller: 'LoginCtrl'
        });
    });

Where /views/login.html are the path names of the files in my directory.

My understanding is that since urlRouterProvider is '/' then I should see <p>This is home view</p> in at '/'. But I don't. So, what retarded thing have I done so that even hard coded templates don't show up.

Upvotes: 1

Views: 319

Answers (1)

Radim K&#246;hler
Radim K&#246;hler

Reputation: 123861

I just created a plunker here - and change only one thing: added comma after 'login'

    $urlRouterProvider.otherwise('/');

    $stateProvider.state('home', {
        url: '/',
        templateUrl: 'tpl.html'
    });

 // $stateProvider.state('login' {
    $stateProvider.state('login', {
        url: '/login',
        templateUrl: 'tpl.html',
        controller: 'LoginCtrl'
    });

And this is working now:

  <a ui-sref="home">home</a>
  <a ui-sref="login">login</a>

The working plunker here

Upvotes: 1

Related Questions