Angular $看怪的行为

时间:2017-05-20 17:25:35

标签: angularjs typescript

我有以下$ watch:

$scope.$watch('someParentClass.someClass.index', (newIndexValue: number) => {
                if (_.isNumber(newIndexValue)) {
                    //Do something
                }
            }, true);

我想按照以下几行触发:

第1,2和3行:

public foo(): someClass{

    let obj: someClass;



    obj = {
        id?: number,
        index: number,
    };

    obj.activeSectionIndex = 0; // Line 1
    obj.activeSectionIndex = 1; // Line 2
    obj.activeSectionIndex = 2; // Line 3

    //...

    return obj;
}

第4行:

public update(exploration: someClass): void {

    //...

    let index = 5;

    exploration.index = index; // Line 4

    //...
}

问题是在第一种情况下return obj;仅在值obj.activeSectionIndex = 2之后触发监视(忽略值更新为0和1),并且不会触发监视所有在第4行的第二种情况。

类似问题的先前答案提出了以下解决方案:

  • 不要复制值,而是创建引用。 (尝试通过创建一个新对象并更新探索来引用它。)
  • 尝试更改回调以获取newVal和oldVal,而不仅仅是newVal。
  • 尝试将objectEquality标志设置为true。并尝试完全删除它。
  • 尝试将$ watch更改为$ scope。$ watchCollection。

这些解决方案都没有奏效。 有关如何解决这个问题的任何建议?感谢。

0 个答案:

没有答案