首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重新绑定$watcher

重新绑定$watcher
EN

Stack Overflow用户
提问于 2014-11-27 14:58:51
回答 2查看 418关注 0票数 1

HTML:

代码语言:javascript
复制
<br/><button class="btn btn-primary" ng-disabled="enableCompare()" ng-click="on_compare_plateformes($item)">Comparer</button>

JS:

代码语言:javascript
复制
propertiesModule.controller('PropertiesComparePlateformesCtrl', ['$scope', 'compareService', '$routeParams', 'PropertiesService', 'ApplicationService', 'PlatformService', 'Page', function ($scope, compareService, $routeParams, PropertiesService, ApplicationService, PlatformService, Page) {

     $scope.on_compare_plateformes = function () {
    ...
    };
..
}]);

propertiesModule.directive('propertiesListCompare', ['compareService', function (compareService) {
    return {
        restrict: 'E',
        scope: {
            properties: '=',
            propertiescible: '=',
            application: '=',
            applicationcible: '=',
            undo: '=',
            myselectref: '=',
            myselectcible: '='
        },
        templateUrl: "properties/properties-list-compare.html",
        link: function (scope, element, attrs) {
            // scope.$watch("propertiescible", function () {
            var unregister = scope.$watch('[properties, propertiescible]',function () {
                  ...
              }, true);
                 ...
           unregister();
        }

    };
}]);

当我点击我的按钮时,如何重新绑定$watcher。

EN

回答 2

Stack Overflow用户

发布于 2014-11-27 15:44:13

我想,通过调用unregister函数,您想要解除侦听器的绑定。但是当范围被破坏时,你应该这样做,而不是在观察者被设置之后。所以,

代码语言:javascript
复制
link: function (scope, element, attrs) {
  var unregister = scope.$watch('[properties, propertiescible]', function () {
  // do stuff
  }, true);
  scope.$on('$destroy', unregister);
}
票数 0
EN

Stack Overflow用户

发布于 2015-12-05 08:15:21

若要在解除绑定后再次绑定监视程序,您需要再次调用$watch,除了此之外,没有安古拉杰再次绑定的方法。为此,您可以创建一个函数:

代码语言:javascript
复制
function watchProps(){
    return scope.$watch('[properties, propertiescible]', function () {
              ..
           }, true);
    }

然后将返回的去注册函数保存到变量中。

代码语言:javascript
复制
var deWatchProps = watchProps();

又要看了就打电话给

代码语言:javascript
复制
var deWatchProps = watchProps();

还可以创建如下所示的切换函数:

代码语言:javascript
复制
function toggleWatchProps(){
        if(scope.watchProps)
        {
            scope.watchProps();
        }
       else{
           scope.watchProps = scope.$watch('[properties, propertiescible]', function () {
              ..
           }, true);
        }
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27173556

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档