контроллер angularjs и директива привязки данных не работает

0

У меня есть контроллер и директива, что я хочу использовать двухстороннюю привязку данных к объекту. Цель директивы - просто обновить значение. В настоящее время я не получаю привязку данных к работе должным образом, потому что в событии onchange, когда я обновляю связанную переменную, цвет фона div не изменяется. Также, когда я открываю цветовое колесо, значение колеса не является scope.activeColor.

Мой HTML выглядит так: у него есть директива и div с ng-style.

 <li ng-repeat="(key, color) in colors" ng-style="{'background': 'rgb(' + color.r + ',' + color.g + ','+ color.b}" ng-click="editColour(color)">
 <div ng-style="{'background': 'rgb(' + activeColor.r + ',' + activeColor.g + ','+ activeColor.b}"></div>

 <input type="text" colorwheel value="currentColor">

В моем контроллере я определяю объект:

$scope.editColour = function(colour) {
  $scope.activeColor = colour;
};

Моя директива такова:

.directive('colorwheel', function() {
      return {
          restrict: 'A',
          link: function(scope, element) {
            var currentColor = 'rgb(' + scope.activeColor.r + ',' + scope.activeColor.g + ',' + scope.activeColor.b + ')';
            scope.currentValue = {color: currentColor};
            element.minicolors({
              control: 'wheel',
              format: 'rgb',
              inline: true,
              opacity: false,
              change: function(value, opacity) {
                var rgb = element.minicolors('rgbObject');
                scope.activeColor.r = rgb.r;
                scope.activeColor.g = rgb.g;
                scope.activeColor.b = rgb.b;
                console.log(rgb);
              }
            });
          }
      };
  });
  • 0
    Директива не определяет привязку данных. См. Stackoverflow.com/questions/14050195/…
  • 0
    вам, вероятно, нужно смотреть scope.activeColor внутри директивы, это может помочь вам лучше, если вы разместите здесь скрипку или фрагмент
Теги:
angularjs-directive

1 ответ

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

Вам нужно посмотреть переменную activecolor в директиве, чтобы директива понимала, что переменная изменена

Пример может быть

$scope.$watch('activeColor', function (newValue, oldValue) {
                     if (newValue) {
                       //do something with new value
                     }
                 });

Ещё вопросы

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