Как использовать $scope.watch для области видимости внутри директивы?

#angularjs #angularjs-directive #angularjs-scope

#angularjs #angularjs-директива #angularjs-scope

Вопрос:

Я хотел бы посмотреть модель search.value внутри моей пользовательской директивы.

Как это сделать?

HTML :

 <div search></div>
  

ДИРЕКТИВА :

 app.directive('search', function($rootScope) {
  return {
    restrict: 'A',
    transclude: true,
    scope: true,
    templateUrl: 'template/app/inputSearch.html',
    replace: true,
    controller: function() {

    },
    link: function (scope, element) {

        /* ... */
        scope.$watch(......., function(value) {

        });

    }
  };
});
  

ШАБЛОН :

 <div class="search-parent">
  <div class="search">
    <input type="text" ng-model="search.value" />
  </div>
</div>
  

Ответ №1:

 controller: function($scope) { 
    $scope.$watch('search.value', function(newVal, oldVal) {

    });
}
  

Комментарии:

1. Хорошо, спасибо, я попробую. Но почему вы помещаете это в функцию контроллера?

2. Любой способ должен работать. Это просто зависит от того, как вы хотите организовать свой код внутри link и controller функций. Мне нравится этот подход, потому что я могу сначала протестировать свой код с помощью директивы controller outside, а затем, если это сработает, код можно вырезать и вставить прямо в контроллер директивы. С помощью link вы должны переименовать $scope в scope .