如何在没有$ watch的情况下更新$ scope值以进行交叉更新

时间:2014-04-29 22:54:29

标签: angularjs angularjs-scope

我需要两个对象的交叉更新值

$scope.price = 0
$scope.amount = 1
$scope.total = 0

$scope.$watch('price', function(){
  $scope.total = parseFloat( $scope.price * $scope.amount ).toFixed(2);
})

$scope.$watch('total', function(){
  $scope.price = parseFloat( $scope.total / $scope.amount ).toFixed(2);
})

当我从$ watch函数更新值时,我需要禁用$ watch(可能类似于setViewValue

我该怎么办?

问题是:如何在没有摘要的情况下更新$ scope值(跳过$ watch函数)?

1 个答案:

答案 0 :(得分:0)

如果你看一下这里的$ watch部分:

Angular Scope

  

<强>返回

     

function()返回此侦听器的注销函数。

这样:

var disabler = $scope.$watch('price', function(){
  $scope.total = parseFloat( $scope.price * $scope.amount ).toFixed(2);
})

//this will de-register the watch
disabler();