2017-06-01 55 views
1

您好我正在AngularJS组件上工作,需要帮​​助如何使用$ watch内的Constructor()如下我附加了我的代码结构。

import template from './Mypage.component.html'; 
export const MyComponent = { 
template, 
bindings: { 
    myData: '<' 
}, 
controller: class MyController { 
    constructor($scope) { 
    $scope.$watch(() => this.myData, newVal => { 
    this._myFunction(); 
    }); 
    } 
} 

回答

0

您应该添加$scope依赖内部$inject阵列,并用它在构造函数应该工作。但请在下面找到建议。

controller: class MyController { 
    $inject = ['$scope']; 
    constructor($scope) { 
    $scope.$watch(() => this.myData, newVal => { 
     this._myFunction(); 
    }); 
    } 
} 

我们都知道$watch确实每个消化周期将触发以更新页面上data bidnings,它是坏的性能的原因。相反,您可以使用angularjs组件的$onChanges生命周期钩,以便在绑定值发生变化时才会触发。

controller: class MyController { 
    constructor($scope) {} 
    $onChanges(newVal) { 
    this._myFunction(); 
    } 
} 
0

使用$onChanges()方法,而不是$scope.$watch()

class MyController { 
    constructor() { 
    // Your constructor... 
    } 

    $onChanges(changedObj){ 
    // Expect myData changes 
    console.log(changedObj) 
    } 
} 

更多信息here