观察函数及其所有变量,以便在ng

时间:2016-11-27 13:30:38

标签: angularjs typescript angularjs-ng-if

我想将一个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:

  1. 当我进入和离开州时,为什么isDone功能会运行?
  2. 有没有更好的方法告诉角度运行此功能每个摘要周期运行?或者观察其内部变量的任何变化(不向每个变量添加$watch

0 个答案:

没有答案