AngularJS bindonce指令

AngularJS bindonce指令,angularjs,angularjs-directive,Angularjs,Angularjs Directive,我有计算“ago”的简单指令 因为我是在过去的某个地方找到的,记不清了。但是有了这个链接,指令就不起作用了,它实际上是{{calculateTime(time)}}打印出来的,在控制台中没有错误 有什么想法吗 Bind one或one-time Bind using::是关于一次绑定模型的 因此,如果您是1.3并且使用了{::calculateTime(time)},那么您的指令链接仍然是您所了解的周期的一部分 你的链接销毁将不会像那样工作,因为计算时间在 {{计算时间(时间)} 现在不存在,因

我有计算“ago”的简单指令

因为我是在过去的某个地方找到的,记不清了。但是有了这个链接,指令就不起作用了,它实际上是{{calculateTime(time)}}打印出来的,在控制台中没有错误


有什么想法吗

Bind one或one-time Bind using::是关于一次绑定模型的

因此,如果您是1.3并且使用了{::calculateTime(time)},那么您的指令链接仍然是您所了解的周期的一部分

你的链接销毁将不会像那样工作,因为计算时间在

{{计算时间(时间)}

现在不存在,因此它是如何打印的。从Angular的角度来看,这不是错误情况。尽管在链接fn中,您可以用calculateTime()的早期结果的预计算值替换HTML,即。 基本上用结果替换{calculateTime(time)}}

但所有这些似乎都是实现你可能想要实现的目标的复杂方式。 想知道为什么不能使用带有一次性绑定的简单过滤器


基本上你想毁掉这块手表?所以它不再是消化循环的一部分了,对吗?。您可以使用,以便calculateTime上的手表在初始加载后被销毁。@PSL或您可以使用…@Blackhole是的,只有在您处于1.3I中时才正确。如果我尝试将bind-once属性应用于我的指令,我会遇到一个错误:多个指令需要独立的作用域。我尝试过了,但它会抛出奇怪的错误,因为它需要的是其他东西而不是函数。。。
.directive('ago', ['$timeout', function($timeout) {
    return {
        restrict: 'E',
        scope: {
            time: '@'
        },         
        template: '<span class="time">{{ calculateTime(time) }}</span>',
        controller: function($scope) {
            $scope.calculateTime = function(timestamp)
            {


<ago time="{{ status.time }}"></ago>
    link: function( $scope ) {
        $timeout(function() {
            $scope.$destroy();
        }, 0);
    }
.filter('calcTime',function() {

  return function(input) {
    return input - 2;
  };
})