鉴于以下内容:
var Panda;
(function (Panda) {
"use strict";
var BulkCaptureComponentController = (function () {
function BulkCaptureComponentController() {
this.textBinding = '';
this.dataBinding = 0;
}
BulkCaptureComponentController.prototype.$onInit = function () {
console.log('init');
};
BulkCaptureComponentController.prototype.$postLink = function () {
alert('1');
};
BulkCaptureComponentController.prototype.add = function () {
this.functionBinding();
};
return BulkCaptureComponentController;
}());
var BulkCaptureController = (function () {
function BulkCaptureController() {
this.value = 0;
}
BulkCaptureController.prototype.$postLink = function () {
alert('1');
};
BulkCaptureController.prototype.$onInit = function () {
console.log('init');
};
BulkCaptureController.prototype.add = function () {
this.value = this.value + 1;
};
return BulkCaptureController;
}());
var BulkCaptureComponent = (function () {
function BulkCaptureComponent() {
this.bindings = {
textBinding: '@',
dataBinding: '<',
functionBinding: '&'
};
this.controller = BulkCaptureComponentController;
this.templateUrl = '/areas/schedule/views/bulkcapture/bulk-capture.html';
}
return BulkCaptureComponent;
}());
Panda.panda.component('bulkCaptureComponent', new BulkCaptureComponent());
Panda.panda.controller("BulkCaptureController", BulkCaptureController);
})(Panda || (Panda = {}));
;
为什么$postLink
永远不会被角度调用。
我的模板(现在)只包含html内容。
两种init
方法都可以正常工作,但$postLink
不会被调用。
答案 0 :(得分:4)
Angular 1.5.3中的一些新的生命周期钩子(包括$ postLink)were added
$onChanges(changesObj)
- 每当更新单向绑定时调用。 changesObj
是其键的哈希
是已更改的绑定属性的名称,值是表单的对象
{ currentValue: ..., previousValue: ... }
。使用此挂钩可触发组件内的更新,例如
克隆绑定值以防止外部值意外突变。$onDestroy
- 在控制器的包含范围被销毁时调用。使用此钩子释放
外部资源,手表和活动处理程序。$postLink
- 在此控制器的元素及其子元素被链接之后调用。类似于后链接
函数这个钩子可以用来设置DOM事件处理程序并直接进行DOM操作。
请注意,包含templateUrl
指令的子元素将不会被编译和链接
他们正在等待他们的模板异步加载,他们自己的编译和链接已经
暂停直至发生。以前的1.5.x版本不提供它们。