angular-ui-router仅加载模板,但不加载未加载的控制器

时间:2015-12-26 19:38:33

标签: javascript angularjs

我尝试将我的Angular应用程序从使用ngRoute迁移到uiRoute。除控制器外,一切正常。它们很简单,不像ngRoute那样加载,我不知道为什么。正如我从uiRoute看到它应该像ngRoute一样工作,但事实并非如此。没有异常抛出。我也没有找到类似我的类似配置的任何示例,尽管它非常简单。我回家有人可以告诉我控制器藏在哪里。

http://plnkr.co/edit/VGyi3AxgslgpvwBCTkXI?p=preview

因此对于ngRoute,控制器应该可以通过“主页”访问,但看起来它只是空的:(

;(function(angular) {
'use strict';

 angular
 .module('MainRouter', ['ui.router'])
 .config(['$stateProvider', function($stateProvider) {
  $stateProvider
    .state('home', {
      url: '',
      views: {
        "mainView": {
          templateUrl: 'home.html'
        }
      },
      controller: 'HomepageCtrl',
      controllerAs: 'homepage'
    });
 }]);
})(angular);

1 个答案:

答案 0 :(得分:2)

在状态定义中使用views选项时,ui-router引擎不会查找templateUrl&在州一级定义controller,基本上您需要提供controller&仅来自templateUrl定义的namedView值。在您的情况下,您应该在mainView定义对象中添加控制器。

<强>代码

.config(['$stateProvider', function($stateProvider) {
  $stateProvider
    .state('home', {
      url: '',
      views: {
        "mainView": {
          templateUrl: 'home.html',
          controller: 'HomepageCtrl',
          controllerAs: 'homepage'
        }
      },
    });
}]);

Demo Plunkr