Директива Access в другой части представления

0

Я использую autocomplete-директиву и хотел бы переключить bool, если никакая опция не соответствует входным данным пользователя.

Вот директива, аналогичная той, которую я использую:

angular.module('MyModule', []).directive('autoComplete', function($timeout) {
    return function(scope, iElement, iAttrs) {
            iElement.autocomplete({
                source: scope[iAttrs.uiItems],
                select: function() {
                    $timeout(function() {
                      iElement.trigger('input');
                    }, 0);
                }
            });
    };
});

Контроллер с некоторыми именами и (если нужно) bool. Я говорю "если нужно", думая, что этого может быть достаточно, чтобы обмануть взгляд и, возможно, не понадобиться в контроллере?

function DefaultCtrl($scope) {
    $scope.names = ["john", "bill", "charlie", "robert", "alban", "oscar", "marie", "celine", "brad", "drew", "rebecca", "michel", "francis", "jean", "paul", "pierre", "nicolas", "alfred", "gerard", "louis", "albert", "edouard", "benoit", "guillaume", "nicolas", "joseph"];

  $scope.noMatch = true;

}

И мнение:

<div ng-app='MyModule'>
    <div ng-controller='DefaultCtrl'>
    <div ng-show="noMatch">
          NoMacth
        </div>
        <input auto-complete ui-items="names" ng-model="selected">

    </div>
</div>

играть на скрипке

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

{{ auto-complete }} 

в надежде, что он будет отображать что-то, но он отображает только 0.

Спасибо.

  • 0
    Вы просто спрашиваете, как установить переменную области видимости внутри функции ссылки вашей директивы?
  • 0
    Если это решит мою проблему, то я думаю, что я :) Я думаю, что должен быть способ проверить, активен ли список или нет, и затем переключить bool на его основе.
Показать ещё 2 комментария
Теги:
angularjs-directive

1 ответ

0

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

Директива, на которую вы ссылаетесь, по-видимому, не использует область видимости, поэтому она не помещала никаких значений для ссылки.

Вот пример. Если вы используете такую директиву, то someProperty будет доступен в области родительского контроллера в любом месте представления как обычный {{someProperty}}

angular.module('app.directives.myDirective', [
  'myService'
]).directive('myDirective', function (myService) {
  return {
    restrict: 'AE', // my personal preference
    templateUrl: 'directives/myDirectiveView.html', // optional
    link: function ($scope, element, attrs) {
      $scope.someProperty = 'true';
    }
  };
});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню