加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

在AngularJS中禁用和启用监视

发布时间:2020-12-17 07:10:56 所属栏目:安全 来源:网络整理
导读:我有一个数据对象的监视: $scope.$watch('data',function(after,before) { $scope.saveData();},true); 我还有一个模态弹出来编辑上面的一些数据对象的属性.但是,如果我通过此模式编辑任何属性,但决定“取消”,它仍会保存已编辑的属性. 当模态弹出时,有没有
我有一个数据对象的监视:

$scope.$watch('data',function(after,before) {
    $scope.saveData();
},true);

我还有一个模态弹出来编辑上面的一些数据对象的属性.但是,如果我通过此模式编辑任何属性,但决定“取消”,它仍会保存已编辑的属性.

当模态弹出时,有没有办法禁用该手表?

解决方法

$watch返回一个函数.如果你打电话给你,你会删除你的观察者

angular docs,向下滚动至$watch并查看返回值

var myWatcher = $scope.$watch('data',before) {
   $scope.saveData();
},true);

myWatcher(); // removes your watcher

编辑:
使用angular-ui-bootstrap,您可以将注销功能传递给模态控制器.来自docs的修改示例:

var modalInstance = $modal.open({
      templateUrl: 'myModalContent.html',controller: ModalInstanceCtrl,size: size,resolve: {
        items: function () {
          return {
            data: data
            myWatcher: myWatcher // you can call items.myWatcher() in your modal controller
          };
        }
      }
    });

但我不知道重新启用观察者的简单方法(函数调用或类似方法).你将不得不再次设置它.

modalInstance.result.then(function (data) {
      $scope.data = data;
        },function () {
          // callback for cancel,here you could re-apply the watcher
    });

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读