2015-12-26 64 views
3

我试图将我的Angular应用从使用ngRoute迁移到uiRoute。一切工作正常,除了控制器。他们很简单,不像使用ngRoute那样加载,我不明白为什么。正如我从uiRoute看到它应该像ngRoute一样工作,但它不会。没有异常抛出。我也没有找到类似于我的类似配置的例子,虽然它非常简单。我家有人可以告诉我我的控制器藏在哪里。angular-ui-router只加载模板但不加载控制器

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); 

回答

2

当您使用views选项的状态定义里面,然后ui-router引擎不寻找templateUrl & controller定义在州级,基本上你需要提供controller & templateUrl值从仅限定义。在你的情况下,你应该在mainView定义对象中添加控制器。

代码

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

Demo Plunkr

+0

非常感谢。我以某种方式相信,控制器对于非常状态而言是全球性的。但我想这就是我该怎么做:D – DaSch

+0

@DaSch很高兴帮助你。谢谢:) –