1

I was working with ngRoute before I migrated to ui-router.

In my application I have this config :

myapp.config(function($stateProvider, $urlRouterProvider) {
  $stateProvider
    .state('home', {
      url: '/home',
      templateUrl: 'views/home.html'
    })
    .state('about', {
      url: '/about',
      templateUrl: 'views/about.html'
    })
    .state('contact', {
      url: '/contact',
      templateUrl: 'views/contact.html'
    })
    .state('work', {
      url: '/work',
      templateUrl: 'views/work.html'
    })
    .state('work.top_authors', {
      url: '/top_authors',
      templateUrl: 'views/work/top_authors.html',
      controller: 'topAuthorsController'
    })
    .state('work.articles_evolution', {
      url: '/articles_evolution',
      templateUrl: 'views/work/articles_evolution.html',
      controller: 'articlesEvolutionController'
    })
    .state('work.top_organizations', {
      url: '/top_organizations',
      templateUrl: 'views/work/top_organizations.html',
      controller: 'topOrganizationsController'
    })
    .state('work.words_cloud', {
      url: '/words_cloud',
      templateUrl: 'views/work/words_cloud.html',
      controller: 'wordsCloudController'
    })
    .state('work.authors', {
      url: '/authors',
      templateUrl: 'views/work/authors.html',
      controller: 'authorsController'
    })
    .state('work.words', {
      url: '/words',
      templateUrl: 'views/work/words.html',
      controller: 'wordsController'
    })
    .state('work.jobs_offers', {
      url: '/jobs_offers',
      templateUrl: 'views/work/jobs_offers.html',
      controller: 'JobOffersByCounteryController'
    });
  $urlRouterProvider.otherwise('/home');
});

for the first 4 states I have no problems, but with the others who are the work state childs I have this problem :

So, when I click on (for example) <a ui-sref="#/work/articles_evolution">Artciles Evolution</a> I get this error in console :

Error: Could not resolve '#/work/articles_evolution' from state 'work'

but When I type the link in the browser : http://localhost/dst-angular/app/#/work/articles_evolution it works without problem.

How can I resolve this ?

My second question is:

in the html page work I have <div ui-view></div> which will be replaced by the template in the ui-sref, I want this page to contain some content and then when I click on the ui-sref to replace this content when the new template is embedded.

How can I do that ?

1 Answer 1

3

You should pass state name in ui-sref instread of url:

<a ui-sref="work.articles_evolution">Artciles Evolution</a>

ui-sref directive will resolve url from state name and set as href attribute of anchor tag.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.