如何仅在用户更新字段时调用函数,而不是在动态更新时调用函数

时间:2017-03-04 11:38:47

标签: javascript angularjs

我的视图是form.html

Size <select ng-model="size" ng-options...>[1..20]</select>
Limiter <select ng-model="limiter">[1..20]</select>

然后在控制器form.js中我

$scope.$watch("limiter", function(newVal, oldVal) {
  if (newVal !== oldVal) {
    size=Math.min(limiter,size);
  }
});

这一切都运行正常,现在我想添加一个sizeMemory,所以如果限制器缩小了大小,然后再次提高,那么大小将会恢复。

这是我尝试过的,但是当限制器改变大小时,大小观察者也会改变sizeMemory。我需要更改此大小的监视功能,以便它仅在用户手动设置大小值时运行:

sizeMemory = size;
$scope.$watch("size", function(newVal, oldVal) {
  if (newVal !== oldVal) {
    sizeMemory=size;
  }
});
$scope.$watch("limiter", function(newVal, oldVal) {
  if (newVal !== oldVal) {
    wantedSize = Math.max(size,sizeMemory);
    size=Math.min(limiter,wantedSize);
  }
});

1 个答案:

答案 0 :(得分:1)

您似乎只需要ng-change,在以编程方式更改模型时不会触发它。