$ scope的最佳实践选择是什么。$ watch?

时间:2015-10-04 06:38:51

标签: angularjs

我正在寻找一种最佳实践解决方案,以避免使用$scope.$watch,给出以下用例:

1)directiveA具有以下isloated范围:

{ sharedModel : '=' }

2)对于它自己的用法,directiveA需要根据modelA更改名为sharedModel的内部状态变量。

3)directiveB使用directiveA,并将sharedModel绑定到modelB(其内部模型)。

<directive-a
  shared-model="vm.modelB" />

4)每当modelB / sharedModel发生变化时,我希望modelA更新(请记住,modelA数据仅来自sharedModel)。

为了完成#4,我可以在$scope.$watch上添加sharedModel但是,$watch性能昂贵且无法测试。任何最佳实践建议?

编辑:

用于实时代码示例see jsfiddle。 请注意我希望替换的第10行的$scope.$watch

1 个答案:

答案 0 :(得分:4)

在这种情况下,可以在没有额外的昂贵手表的情况下进行。您可以使用旧的ES5属性getters,它会非常有效。所以不要$watch尝试这样的事情:

Object.defineProperty($scope, 'modelA', {
    get() {
        return $scope.sharedModel * 10;
    }
});

演示: http://jsfiddle.net/mggc611e/2/