在生产中使用$ ComponentController



我正在建立对话框服务。对话框可以具有一个控制器,与 $ $ 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 服务,可以调用组件控制器。使用我的代码,我只能调用注册控制器或给定的控制器功能。这不是很有帮助,因为我只注册了组件,而不是单个控制器。

我的问题

是否可以/建议在生产中使用 $ componentController ?或者我监督的变体中是否有任何AngularJ?

$componentController属于ngmock模块,因为它对测试很有用,但被认为是生产中的黑客。由于ngmock足够大,不应该在生产中可用,因此应该粘贴它以获得可用。

解决此问题的正确方法是具有注册的控制器,这些控制器被重复使用为组件控制器,或者使用JS模块的导入/导出控制器函数/类。

由于MdDialogController属于第三方模块,未注册或导出并且很小,可以粘贴。

相关内容

  • 没有找到相关文章

最新更新