Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using 'controller as' with the ui-router isn't working as expected

Tags:

I have the following state setup for a page using an abstract state and the controller as syntax:

# Details page route .state 'title',    url: '/title',   abstract: true,   template: '<ui-view/>', .state 'title.show',    url: '/:titleId',   templateUrl: 'title/show.html'   controller: 'Title as t' 

For the purpose of this demo lets say I assign a variable to the 't' instance of the 'Title' controller and I do this inside of the Title controller function.

angular.module('title').controller 'Title',  ['$state', ($state) ->    this.name = 'Test' 

and inside my view 'title/show.html' I attempt to print out that variable I just created to the page:

{{t.name}} 

I don't see anything. But if I remove the controller our of the ui-router and onto the element that wraps the 'title/show.html' page like this:

<div ng-controller="Title as t"> 

Then everything works great. Has anyone come across this problem before. I have it working fine in another app so I'm still trying to figure out what might be different in this app, maybe a difference in js library versions.

like image 575
HomeBrew Avatar asked Mar 09 '15 22:03

HomeBrew


1 Answers

In your state configuration :

Instead of controller: 'Title as t', try :

controller: 'Title', controllerAs: 't' 

Edit : Just implemented a minimal app with ui-router and the syntax controller: Title as t also works, in versions 0.2.0 of ui-router to the most recent one as of today. I can see the t instance when I inspect angular scopes.

like image 163
Michael P. Bazos Avatar answered Oct 28 '22 12:10

Michael P. Bazos