Javascript Angularjs-$scope.$destroy不';不要移除观察者

Javascript Angularjs-$scope.$destroy不';不要移除观察者,javascript,angularjs,angularjs-scope,Javascript,Angularjs,Angularjs Scope,我正试图找出如何创建我自己的“一次性绑定”,对于Angularjs使用cleanup函数删除观察者: function cleanup(element) { element.off().removeData(); var injector = currentSpec.$injector; element.$injector = null; // clean up jquery's fragment cache angular.forEach(angular.el

我正试图找出如何创建我自己的“一次性绑定”,对于Angularjs使用
cleanup
函数删除观察者:

function cleanup(element) 
  { 
  element.off().removeData();

  var injector = currentSpec.$injector;

  element.$injector = null;

  // clean up jquery's fragment cache
  angular.forEach(angular.element.fragments, function(val, key) {
    delete angular.element.fragments[key];
  });

  angular.forEach(angular.callbacks, function(val, key) 
    {
    delete angular.callbacks[key];
    });

  angular.callbacks.counter = 0;
  }
使用自毁服务作为简单绑定一次:

function onetime()
  {
  /*...*/
  onetime = Function;
  }

angular.module('myApp').constant('bindonce', onetime);

angular.module('myApp').controller('foo', function($bindonce){
  this.$inject = '$bindonce';
  $scope.mybind = $bindonce();
} 
请参考迁移指南以查找突破性更改:

参考资料


你试过使用$timeout而不是setTimeout吗?你看过了吗?@JonSnow:看过,它没有改变任何东西。关于“github.com/Pasvaz/bindonce”,它完成了这项工作。我想知道幕后发生了什么。@james你是对的,bindonce做了这个把戏,尽管我在寻找一个更简单的解决方案。tnx!请注意,我的问题特别提到我正在寻求使用Angular 1.2.X的解决方案。{{::attr}}表示角度1.3+
function onetime()
  {
  /*...*/
  onetime = Function;
  }

angular.module('myApp').constant('bindonce', onetime);

angular.module('myApp').controller('foo', function($bindonce){
  this.$inject = '$bindonce';
  $scope.mybind = $bindonce();
}