class AController {
conversation: any;
constructor() {
'ngInject';
}
$onInit() {
console.log(this.conversation) // This is undefined.
}
}
我有这个组件
export const AComponent = function () {
return {
template: require('./attachments.component.jade'),
bindings: {
conversation: '<'
},
controller: AController,
controllerAs: '$ctrl'
};
}
这是一个tempalte。 conversation
存在于此处。
attachments(conversation='conversation')
模板和控制器正在运行,但this.conversation
未定义。无法弄清楚出了什么问题。
答案 0 :(得分:0)
一切看起来都正确,只是在this.conversation
被调用的时候可能没有定义$onInit
。
您可以检查conversation
中是否定义了$onChanges
,还是使用ngcomponent之类的更高级别抽象,并检查this.props.conversation
中是否定义了render()
方法。
答案 1 :(得分:0)
使用$onChanges
生命周期钩子查看单向绑定的值:
class AController {
conversation: any;
constructor() {
'ngInject';
}
$onInit() {
//console.log(this.conversation) // This is undefined.
}
$onChanges(changes) {
if (changes.conversation) {
console.log(changes.conversation.currentValue);
}
}
}
生命周期挂钩
$onChanges(changesObj)
- 每当更新单向(<
)或插值(@
)绑定时调用。changesObj
是一个哈希,其键是已更改的绑定属性的名称,值是{ currentValue, previousValue, isFirstChange() }
形式的对象。使用此挂钩触发组件内的更新,例如克隆绑定值以防止外部值意外突变。请注意,初始化绑定时也会调用此方法。— AngularJS Comprehensive Directive API Reference (Life-Cycle Hooks)