在命名视图中未定义控制器

时间:2016-05-09 16:35:24

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

以下作品完美无缺。 在我的应用程序文件app.js中,我有像

这样的状态
dd(config(b.name))        //b
dd(config(b.name_of_1))   //a
dd(config(b.name_of_3))   //null

但是一旦我尝试使用如下的命名视图。它停止路由

.state('nna.home',
{
    url: '/home',
    views: {
        templateUrl: 'views/home.html'                
    }
})

//home.html is like

<script src="../controllers/home.js"></script>
<div class="container cf" ng-controller="home">

// my home.js is included correctly in all cases have code like
alert(2); // works
app.controller('home', function ($scope) {
    alert(2); // works
});

Plunker

只要我在索引中加载所有控制器文件,我就可以使用它们但我想只在视图中加载控制器而不是索引

可能问题在于我对命名视图的理解,但我很难知道为什么.state('nna.home', { url: '/home', views: { 'v1' : { templateUrl: 'home.html', controller: 'home', resolve: { deps: function ($ocLazyLoad) { return $ocLazyLoad.load('homecontroller.js'); } } }, } // my home.js is included correctly in all cases have code like alert(2); // works app.controller('home', function ($scope) { alert(2); // Does not work }); 未定义的原因,即使我可以通过警告显示文件已成功添加

2 个答案:

答案 0 :(得分:0)

试试这个:

   .state('nna.home',
    {
        url: '/home',
        views: {
            'v1': {
                templateUrl: 'views/home.html',
                controller: 'home'
            }
        }
    })

答案 1 :(得分:0)

a working plunker

这些可能是各州:

.state('nna', {
    template: '<div ui-view="v1"></div>',
})
.state('nna.home', {
    url: '/home',
    views: {
      'v1' : {
         templateUrl: 'views/home.html',
         controller: 'home',
      },
    }
});

这些链接现在正在运作:

<a href="#/home">
<a ui-sref="nna.home">

检查行动here