我想将一个ngIf
指令应用于DOM元素,这个ngIf
监视一个函数,该函数检查其他变量的值。如下:
export class Controller{
private x: ObjectClass;
public isDone():boolean{
return this.x.isY() && this.otherFunction();
}
private otherFunction():boolean{
let result:boolean = true;
this.array.forEach((value)=>{
if(!value){
result = false;}
});
return result
}
}
//define the state
.state('app.first-state', {
url: '/first-state,
views: {
'renderView': {
template: require('./states/first-state.html'),
controller: 'Controller as Ctrl',
}
}
})
//in the first-state.html
<div ng-if="Ctrl.isDone()"></div>
x
是一个携带方法和变量的对象。
x.isY()
和this.otherFunction()
将其返回值更改为true
,但ngIf不会重新创建DOM元素。似乎摘要周期不会x
对象观察array
对象。这是有道理的,因为我没有直接将它们用于DOM元素。但是,方法isDone()
仅在我进入州或我离开州时才会运行。
我做了以下解决方法,但我担心会出现性能问题:
private isDoneVar:boolean = false;
//then make my "own digest cycle"
$interval(() => {
this.isDoneVar = this.isDone();
}, 700);
//and in the div
<div ng-if="Ctrl.isDoneVar"></div>
我有两个questoins:
isDone
功能会运行?$watch
)