2016-03-14 2 views
1

Я с помощью пользовательской директивы

<users stats="stats"></users> 

Когда мы изменяем объект области видимости от главного контроллера, я обновляя направляющее значение Scope также

app.directive('users', function(){ 
    var directive = {}; 
    directive.restrict = "E"; 
    directive.templateUrl = "templates/partials/users_stats.html"; 
    directive.scope = {stats:'='}; 
    directive.controller = "userStatsCtrl" 
    return directive; 
}); 

Так Внутри директивного контроллера я выполняю некоторые функции. как

app.controller("userStatsCtrl", function($scope){ 
    $scope.$watch('stats', function(newValue) { 
     if (angular.isDefined(newValue)) { 
     ..... 
     } 
    }); 
}) 

Так вот, я использую $ смотреть слушать рамки, если это обновление, я сделаю некоторые выполнения.

мой вопрос в том, что я не хочу использовать часы для прослушивания области, если область обновления обновляется, мне нужно выполнить некоторые действия.

Так как обновить значение области без использования рамки. $ Смотреть

+1

Почему бы вам не использовать '$ watch'? –

+0

Это повлияет на объект всей области видимости. Но здесь конкретный объект только изменится. Критерий производительности. – Mohaideen

+0

Лучше использовать $ watch, если у вас их нет, у вас не будет проблем с производительностью. Кроме того, если вы хотите посмотреть что-то более точное в вашем объекте, перейдите в $ scope. $ Watch {function() {return stats.a}, function (newValue) {[process ...]}); – Walfrat

ответ

0

Когда-либо «scope.stats» значение переодеться в главном контроллере, вы можете транслировать мероприятие и получить то же событие в вашей директиве и сделать что бы вы ни захотели. Пример кода для трансляции события:

$scope.$broadcast('yourEventName'); 

Присылать событие в директиве:

$scope.$on('yourEventName', function(){ 

}); 
+0

Объем не обновляется. Если я обновляю эту область, не затрагивая здесь. – Mohaideen

+0

Когда страницы загружаются, данные этого времени поступают только из области видимости – Mohaideen

0

как о попытке:

<users stats="stats" ng-change="onUserStatChange($event)"></users> 
          or 
<users stats="stats" ng-blur="onUserStatChange($event)"></users> 

, а затем в контроллере:

$scope.onUserStatChange = function(event) { 
    //event.whatever 
} 
+0

Если я использую ng-change = "onUserStatChange ($ event)", im get Error: [$ compile: ctreq] – Mohaideen

+0

Если вы используете ng-change, вы должны использовать ng- вместе с ним. – Walfrat

Смежные вопросы