在生产中使用 $componentController?
Use $componentController in production?
我正在构建对话服务。一个对话框可以有一个控制器,非常类似于 $mdDialog,像这样:
myDialogService.show({
templateUrl: `<div ng-click="$ctrl.log()">Hello dialog</div>`,
controller: function() {
this.log = function() {
console.log("logged from myDialogController");
}
}
});
效果很好。我以这种方式调用控制器:
locals.$scope = scope;
const invokeController = $controller(options.controller, locals, true);
const controller = invokeController();
if (options.controllerAs) {
scope[options.controllerAs] = controller;
} else {
const controllerAs = "$ctrl";
scope[controllerAs] = controller;
}
在angular-mock中是$componentController服务,可以调用组件控制器。使用我的代码,我只能调用已注册的控制器或给定的控制器函数。这不是很有帮助,因为我只注册了组件,而不是单个控制器。
我的问题
是否possible/recommended在生产中使用$componentController?或者是否有任何我监督过的 AngularJS 构建变体?
$componentController
属于 ngMock 模块,因为它对测试很有用,但在生产中被认为是 hack。由于 ngMock 足够大并且不应该在生产中可用,因此应该粘贴它以便可用。
解决这个问题的正确方法是注册控制器作为组件控制器重复使用,或者 import/export 控制器 functions/classes 带有 JS 模块。
由于MdDialogController
属于第三方模块,不注册不导出,体积小,直接粘贴即可
我正在构建对话服务。一个对话框可以有一个控制器,非常类似于 $mdDialog,像这样:
myDialogService.show({
templateUrl: `<div ng-click="$ctrl.log()">Hello dialog</div>`,
controller: function() {
this.log = function() {
console.log("logged from myDialogController");
}
}
});
效果很好。我以这种方式调用控制器:
locals.$scope = scope;
const invokeController = $controller(options.controller, locals, true);
const controller = invokeController();
if (options.controllerAs) {
scope[options.controllerAs] = controller;
} else {
const controllerAs = "$ctrl";
scope[controllerAs] = controller;
}
在angular-mock中是$componentController服务,可以调用组件控制器。使用我的代码,我只能调用已注册的控制器或给定的控制器函数。这不是很有帮助,因为我只注册了组件,而不是单个控制器。
我的问题
是否possible/recommended在生产中使用$componentController?或者是否有任何我监督过的 AngularJS 构建变体?
$componentController
属于 ngMock 模块,因为它对测试很有用,但在生产中被认为是 hack。由于 ngMock 足够大并且不应该在生产中可用,因此应该粘贴它以便可用。
解决这个问题的正确方法是注册控制器作为组件控制器重复使用,或者 import/export 控制器 functions/classes 带有 JS 模块。
由于MdDialogController
属于第三方模块,不注册不导出,体积小,直接粘贴即可