繁体   English   中英

AngularJS初始化控制器变量

[英]AngularJS initialize controller variables

我在大多数控制器中使用初始化函数init()来设置控制器特定的变量。 我发现我在大多数控制器中都这样做,所以我认为这很常见,但我找不到任何文档。 我看到的选项如下:

  1. 原样离开
  2. 使用运行或提供商服务

     (function () { 'use strict'; CompanyController.$inject = ['CompanyFactory','LocationService']; function CompanyController(CompanyFactory,LocationService) { let vm = this; // Initialize function function init() { vm.company = { solutions: CompanyFactory.getSolutions(), }; // set $location LocationService.setLocation('company-page'); } init(); } angular.module('app.company', []) .controller('CompanyController', CompanyController) })(); 

控制器生命周期钩子在AngularJS 1.5中引入。 $onInit钩子应该扮演这个角色:

this.$onInit = function () { ... }

$onInit hook是pre-link函数的替代品。 它由编译器执行。 如果控制器不属于指令( ng-controller也是指令),则可能无法执行,但是直接使用$controller实例化,如路由控制器。 在这种情况下,应该在构造函数中显式调用this.$onInit()

应该注意的是,在原始片段function init() {...}没有发挥重要作用。 它不作为一种方法公开,因此它无法帮助控制器更加可测试或可扩展。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM