0

我试图在我写在这里的这个AngularJs脚本中反向更新值:http: //jsfiddle.net/flashpunk/tR5Mr/1/

$scope.$watch('watchList', function(newV,oldV) {
    console.log('change');
    $scope.main.right.assets = addAssets();
    $scope.main.right.roa = roaCalc();
    $scope.main.right.target = targetCalc();
}, true);

您可以看到您可以更改影响 MAIN 输入框的 Slide1、Slide2、Slide3、Slide4 和 Slide5 输入框中的值,但是当修改 MAIN 框时,watch 功能似乎不会修改 Slide 框。

谁能帮我完成这项工作?我已经为此绞尽脑汁好几个小时了。

4

2 回答 2

2

尝试,

$scope.$watch(function() {
    return $scope.watchList;
}, function (newV, oldV) {
    console.log('change');
    $scope.main.right.assets = addAssets();
    $scope.main.right.roa = roaCalc();
    $scope.main.right.target = targetCalc();
}, true);

演示

于 2013-10-22T15:21:56.337 回答
0

您的手表正在工作。它是由对任何框的更改触发的。

问题是您的手表仅在触发时计算主框的值。您需要检测哪些值发生了变化(幻灯片或主),并根据哪些变化在适当的方向上进行计算。

最简单的解决方案可能是两块手表——你目前拥有的一块手表一直在看所有的幻灯片。因此,该监视列表现在将如下所示:

$scope.watchList = [
    $scope.slide1,
    $scope.slide2,
    $scope.slide3,
    $scope.slide4,
    $scope.slide5   
];

还有一块新的手表,它可以观看主要内容并更新滑动框。

$scope.$watch('main', function(newV,oldV) {
    console.log('main changed');
    //Update any slide values that need updating here
}, true);
于 2013-10-22T15:28:58.250 回答