我是角色的新手,也必须使用angularjs。大多数我可以与角度相关,但有以下代码让我有点困惑,任何帮助表示赞赏。
angular
.module('Test')
.directive('nbTest', [savedTest]);
/* @ngInject */
function savedTest() {
var directive = {
restrict: 'E',
scope: true,
templateUrl: 'test/newTest/directives/savedTest/nbSavedTests.tmpl.html',
controllerAs: 'vm',
controller: ['$scope', '$mdUtil', '$mdDialog', '$timeout', 'nbApplicationFactory', 'dateService', savedTestCtrl]
};
return directive;
我特别困惑的是'控制器'的阵列。我想要做的是使用$ onInit生命周期钩子,但是我很困惑如何定义控制器的方式。
答案 0 :(得分:1)
这是AngularJS中DI
的完成方式。要实现$onInit
life cycle hook,您只需在控制器函数内部实现它,如:
function savedTestCtrl($scope, $mdUtil, $mdDialog, $timeout, nbApplicationFactory, dateService) {
var ctrl = this;
ctrl.$onInit = onInit;
function onInit() {
//your code here
}
}
答案 1 :(得分:1)
按照你的问题顺序。
首先,'控制器中的数组文字' property在控制器中具有inject dependencies的目的。控制器的行为在savedTestCtrl函数中定义,该函数是数组的最后一个元素。数组中定义的依赖项由框架注入,因此您可以使用params获取控制器内的依赖项。控制器必须具有在阵列中定义的相同数量的参数。例如,savedTestCtrl函数必须具有以下定义:
function savedTestCtrl($scope, $mdUtil, $mdDialog, $timeout, nbApplicationFactory, dateService){
console.log(dateService.text); //prints the property text of your dateService object
}
其次,$ onInit生命周期钩子需要使用函数作为控制器的属性来定义。像这样:
function savedTestCtrl($scope, $mdUtil, $mdDialog, $timeout,nbApplicationFactory, dateService){
var vm = this;
vm.$onInit = function(){
console.info('The init of savedTestCtrl')
}
}
因为此生命周期钩子从角度1.5开始可用,所以请确保您使用的是此版本或更高版本。