angularjs – 使用另一个模块的子控制器
发布时间:2020-12-17 07:33:18 所属栏目:安全 来源:网络整理
导读:我已经定义了一个模块,并将其作为使用ng-app指令的应用程序的主要模块.我使用angular.module(‘myApp’).controller()添加了两个控制器到主应用程序.其中一个控制器具有广泛的范围,而另一个控制器是子控制器. 我现在想要做的是包括一个属于另一个模块的控制
我已经定义了一个模块,并将其作为使用ng-app指令的应用程序的主要模块.我使用angular.module(‘myApp’).controller()添加了两个控制器到主应用程序.其中一个控制器具有广泛的范围,而另一个控制器是子控制器.
我现在想要做的是包括一个属于另一个模块的控制器(而不是主要的myApp模块),但是我无法理解.我不想要全局命名空间控制器. 有谁知道该怎么做? 这是我到目前为止 <!doctype html> <html lang="en" data-ng-app='myApp' data-ng-controller='myApp.mainController'> <head> <meta charset="utf-8"> <title>Untitled</title> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> <script> $(function() { var app,module; //create two modules,one of which will be used for the app base app = angular.module('myApp',[]); module = angular.module('otherModule',[]); //create main controller for main app app.controller('myApp.mainController',function($scope) { $scope.content = 'App main controller content'; }); //create child controller for main app app.controller('myApp.subController',function($scope) { $scope.content = 'App sub controller content'; }); //create a controller for the other module module.controller('othermodule.controller',function($scope) { $scope.content = 'Other module controller content'; }); }); </script> </head> <body> <!-- output content from main controller from main module: myApp --> {{content}} <!-- specify use of main module's child controller and output its content --> <div data-ng-controller='myApp.subController'> {{content}} </div> <!-- NOT WORKING - ideally should output content from the other module's controller --> <div data-ng-controller='othermodule.controller'> {{content}} </div> <!-- load angular library --> <script src="lib/angular/angular.js"></script> </body> </html> 此代码输出以下JavaScript错误,基本上说没有找到othermodule.controller控制器.
确切错误: > Error: Argument 'othermodule.controller' is not a function,got > undefined > assertArg@http://localhost/sandbox/angular/apptemplate/lib/angular/angular.js:1005 > assertArgFn@http://localhost/sandbox/angular/apptemplate/lib/angular/angular.js:1016 > @http://localhost/sandbox/angular/apptemplate/lib/angular/angular.js:4740 > applyDirectivesToNode/nodeLinkFn/<@http://localhost/sandbox/angular/apptemplate/lib/angular/angular.js:4322 > forEach@http://localhost/sandbox/angular/apptemplate/lib/angular/angular.js:140 > nodeLinkFn@http://localhost/sandbox/angular/apptemplate/lib/angular/angular.js:4307 > compositeLinkFn@http://localhost/sandbox/angular/apptemplate/lib/angular/angular.js:3953 > compositeLinkFn@http://localhost/sandbox/angular/apptemplate/lib/angular/angular.js:3956 > nodeLinkFn@http://localhost/sandbox/angular/apptemplate/lib/angular/angular.js:4338 > compositeLinkFn@http://localhost/sandbox/angular/apptemplate/lib/angular/angular.js:3953 > publicLinkFn@http://localhost/sandbox/angular/apptemplate/lib/angular/angular.js:3858 > bootstrap/</<@http://localhost/sandbox/angular/apptemplate/lib/angular/angular.js:964 > Scope.prototype.$eval@http://localhost/sandbox/angular/apptemplate/lib/angular/angular.js:7993 > Scope.prototype.$apply@http://localhost/sandbox/angular/apptemplate/lib/angular/angular.js:8073 > bootstrap/<@http://localhost/sandbox/angular/apptemplate/lib/angular/angular.js:962 > invoke@http://localhost/sandbox/angular/apptemplate/lib/angular/angular.js:2843 > bootstrap@http://localhost/sandbox/angular/apptemplate/lib/angular/angular.js:961 > angularInit@http://localhost/sandbox/angular/apptemplate/lib/angular/angular.js:936 > @http://localhost/sandbox/angular/apptemplate/lib/angular/angular.js:14729 > b.Callbacks/c@http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js:3 > b.Callbacks/p.fireWith@http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js:3 > .ready@http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js:3 > H@http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js:3 > > http://localhost/sandbox/angular/apptemplate/lib/angular/angular.js > Line 5687
你目前做的是“声明”两个模块的应用程序和模块.
当角度引导时,您已经要求它通过应用程序引导.所以现在你的应用程序引导应用程序,但应用程序没有引用你的其他模块(这是模块!). 因此,您必须使用应用程序引导应用程序,并指定对模块的依赖关系,或者使用全新模块引导应用程序,并指定对应用程序和模块的依赖. 这就是你如何定义依赖关系 angular.module('app',['module']); 如果要创建一个全新的模块并将它们指定为依赖关系 angular.module('myApp',['app','module']) 注意:如果您创建一个全新的模块,则必须使用此新模块引导角度应用程序. <html ng-app="myApp"... (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |