2016-02-12 3 views
2

У меня есть эта директива, которая использует услугу «BoxService», чтобы взять определенное значение.Обновить угловую директиву

angular.module("App").directive('boxedWidget', 
    function() { 
     return { 
      restrict: 'E', 
      scope: {  
      'source': '=',  
      }, 
      replace:true, 
      templateUrl: '/widgets/box/widget.html', 
      link: function (scope, element, attrs) { 
       scope.item = scope.source; 
       boxService 
       .getBoxeValue(scope.item.id) 
       .success(function(data, status, headers, config) { 
        scope.item.value = data; 
       }); 

      } 


     } 

    }); 

Теперь я хочу обновить значение каждые 5 секунд. Любое предложение?

ответ

2

Вы можете попробовать $interval перезарядить свои данные в директиве

$interval(function() { 
loadData(); 
}, duration) 

Для более подробной информации о $interval вы можете обратиться к Angular $interval

+1

я только что попробовал с 'setInterval (scope.changeValue(), 5000);' – user5917414

+1

это не то же самое. '$ interval' вызывает обновление' scope'. 'setInterval' нет. –

+0

yes @ user5917414 ... Mosh Feu is Right Это очень простая, но очень важная разница. – CandleCoder

0

вы впрыснуть $ интервал правильно?

angular.module("App").directive('boxedWidget', ['$interval', function($interval) { 
     return { 
      restrict: 'E', 
      scope: {  
      'source': '=',  
      }, 
      replace:true, 
      templateUrl: '/widgets/box/widget.html', 
      link: function (scope, element, attrs) { 
       scope.item = scope.source; 
       // don't forget to inject $interval in the directive declaration 
       $interval(function(){ 
        boxService 
        .getBoxeValue(scope.item.id) 
        .success(function(data, status, headers, config) { 
         scope.item.value = data; 
        }); 
       }, 5000); 
      } 


     } 

    }); 
Смежные вопросы