Angular js局部控制器

时间:2015-06-17 05:09:58

标签: angularjs angular-ui-router

我有一个角度js文件夹结构如下所示。我使用角度ui路由器进行路由。我的问题是我在index.html中包含了HomeController.js的链接,但似乎有角度的ui路由器无法找到控制器。有解决方案吗也许是一种直接包含控制器链接而不是控制器名称的方法?



lock ("1" + "2")
{
    Task.Factory.StartNew(() =>
    {
        var a = "1";
        lock (a + "2")
        {//launched immediately

        }
    });
    Thread.Sleep(10000);
}






    app/
        index.html
        app.js
        Home/
            home.html
            HomeController.js
        Contact/
            contact.html
            ContactController.js

var app = angular.module('myApp', ['ngRoute', 'ui.router'];
        app.config(function($stateProvider, $urlRouterProvider) { 
        	$urlRouterProvider.otherwise('/');
            $stateProvider
                .state('home', {
                    url: '/',
                    templateUrl: 'Home/home.html',
                    controller: 'homeController'
                })
                .state('contact', {
                    ...
                });
        });

// working if is in same js file, not working if on different js file 
app.controller('homeController', function ($scope) {
	$scope.logoName = 'myLogo';
});




1 个答案:

答案 0 :(得分:1)

使用带有UI路由器的AngularJS,每当我遇到麻烦时,我总是会尝试检查此清单。

      
  • controller.js中包含您的index.html文件并交叉检查您的浏览器控制台是否未记录 404 以获取此文件的GET请求。 (使用Wiredep自动执行此操作)
  •   
  • 确保controller的名称在构造函数和state定义中相同。
  • 如果您使用的是IIFE,请确保最后调用它。
(function() {
    angular
      .module("app")
      .controller("HomeCtrl", HomeCtrl);

    function HomeCtrl() {
    }
  })();
     
  • 确保将Module声明的controller注入主bootstrap模块定义,并交叉检查所有其他依赖项是否已解决。

查看您的问题,我认为您不能直接在状态定义选项对象中包含控制器的链接。但您可以交叉检查以上所有要点,并在控制台中复制并粘贴错误。这有助于找到更快的解决方案。

在查看您最近的评论时,我认为这是因为Module依赖性问题。点#4

确保指定要在其下定义控制器的模块。

如果是现有模块(之前定义的):

angular
  .module("existingModule")
  .controller("HomeCtrl", function() {} )

如果是新模块

angular
  .module("newModule", []) // Make sure you inject this newModule in app.js
  .controller("HomeCtrl", function() {})

修改:   查看更新,您已使用ng-controller在标记中明确指定了控制器。此div内的任何角度表达式原型都来自bsCarouselControllerhomeControllerRootScope