Передать переменную в директиву, которая ограничена атрибутом

0

У меня есть эта директива:

.directive('myDate', ['$timeout', '$rootScope', '$locale',
    function ($timeout, $rootScope, $locale) {
        'use strict';
        return {
            restrict: 'A',
            scope: {
                customDate: '='
            },
            // the rest part of directive...
        };
    }
]);

Я знаю, как передать переменную директиве, которая ограничена элементом. Но этот подход не работает, когда директива указана как атрибут:

<div class="input-group date" my-date custom-date="testDate">
     <input type="text" class="form-control" ng-model="dateFrom" />
</div>

Где:

scope.testDate= new Date('2015-01-13')

Как я могу заставить его работать?

Теги:
angularjs-directive

1 ответ

0
Лучший ответ

По большей части ваш код должен работать. Здесь находится рабочий плункер для отдыха. С ОП было всего несколько мелких проблем. В контроллере свойство, связанное с атрибутом директивы, должно быть с тем же именем (scope.date должно быть scope.testDate) и т.д.

Контроллер:

app.controller('Ctrl', function($scope) { 
  $scope.testDate = new Date('2015-01-13')
});

Директива:

app.directive('myDate', ['$timeout', '$rootScope', 
    function ($timeout, $rootScope) {
        'use strict';
        return {
            restrict: 'A',
            scope: {
                customDate: '='
            },
            link(scope) {
              console.log(scope.customDate);
            }
        };
    }
]);

HTML:

  <body ng-app="myApp">
    <div ng-controller="Ctrl">
      <div class="input-group date" my-date custom-date="testDate">
        <input type="text" class="form-control" ng-model="dateFrom" />
      </div>
    </div>
  </body>
  • 0
    date и testDate также были моей ошибкой при копировании / вставке / переименовании здесь. Это все еще не работает для меня. Но теперь я знаю, что этот подход правильный благодаря вашему рабочему примеру, и я проверю причину в других частях скрипта.

Ещё вопросы

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