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 ボックスが変更された場合、監視機能はスライド ボックスを変更しないようです。

誰でもこの作業を手伝ってもらえますか? 私はこれについて何時間も頭を悩ませてきました。

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

あなたの時計は動いています。いずれかのボックスへの変更によってトリガーされています。

問題は、トリガーされたときにウォッチがメイン ボックスの値のみを計算することです。どの値が変更されたか (スライドまたはメイン) を検出し、変更に基づいて適切な方向に計算する必要があります。

最も簡単な解決策は、2 つの時計を使用することです。現在持っている時計は、すべてのスライド ボックスを監視し続けます。ウォッチリストは次のようになります。

$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 に答える