我不知道什么时候在创建模块后使用 app.register.controller 和 app.controller 创建 Controller 。我用谷歌搜索,但没有发现两种情况之间有明显区别。请张贴示例。
最佳答案
简单回答
您可以使用 app.controller
在应用程序运行之前注册提供者(即,在 Bootstrap 或 ng-app
之前,在配置时)。 app.register.controller
用于在应用已经启动(即正在运行)时注册新的提供者。
更详尽的解释
AngularJs 加载在模块启动之前注册的所有提供程序,一旦您的模块启动,angular 将不再寻找已注册的提供程序。这对大多数应用程序来说都很好,但在某些情况下,您必须在运行时加载新的提供程序(即,在应用程序启动后),这称为延迟加载。因此,如果 Angular 不再寻找已注册的组件,您也必须手动注册它。
例如:
var app = angular.module('myApp', []);
app.controller('myController1', function (){});
angular.element(documento).ready(function () {
// equivalent to ng-app attribute
angular.bootstrap(document, ['myApp']);
});
此时,angularjs 会加载所有在引导阶段之前注册的提供者。但是,如果您再次尝试注册一个 Controller ,它不会加载到您的应用程序中,因为 angularjs 只是在引导应用程序时加载它。
因此,要在运行时注册一个提供者,您必须像这样在您的模块上公开 angularjs 的提供者和组件工厂:
app.config(function($controllerProvider, $compileProvider, $filterProvider, $provide) {
app.register = {
component: $compileProvider.component,
controller: $controllerProvider.register,
directive: $compileProvider.directive,
filter: $filterProvider.register,
factory: $provide.factory,
service: $provide.service
};
});
查看此答案以获取更多信息:https://stackoverflow.com/a/20922872/4488121
最后,现在它允许您在应用程序启动后(即在运行时)注册提供者。
app.register.controller('myController2', function (){});
关于angularjs - AngularJS 中 app.register.controller 和 app.controller 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40790545/