无法在$ stateProvider.state中使用控制器

时间:2014-10-21 04:12:14

标签: angularjs angular-ui-router angularjs-routing

app.js:

var testRoute= angular.module('testRoute', ['ui.router']);

testRoute.config(function ($stateProvider, $urlRouterProvider) {

    $urlRouterProvider.otherwise('/home');

    $stateProvider

        .state('home', {
            url: '/home',
            templateUrl: 'home/partial-home.html',
            controller: 'myController'
        })

        .state('about', {
            url: '/about',
            templateUrl: 'about/partial-about.html'
        });

});

我已经定义了一个控制器就绪,我想在每个状态下使用该控制器,但它不起作用,我收到了一条错误消息。我该如何使用控制器?

2 个答案:

答案 0 :(得分:1)

您需要将myController注册为控制器,而不仅仅是将其作为一个函数。所以如果你有:

function myController($scope) {
  ...
}

你需要说:

testRoute.controller('myController', myController);

或者您也可以直接进行内联,

testRoute.controller('myController', function($scope) {
   ...
});

答案 1 :(得分:0)

请检查此demo

var testRoute= angular.module('testRoute', ['ui.router']);

testRoute.config(function ($stateProvider, $urlRouterProvider) {

    $urlRouterProvider.otherwise('/home');

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

    $stateProvider.state('about', {
            url: '/about',
            templateUrl: 'about/partial-about.html'
        });

});

var myController = function($scope){
 alert("hello world!");
}

testRoute.controller('myController', myController);