2015-11-30 2 views
0

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

Мой 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

Директива не определяет привязки данных. См. Http://stackoverflow.com/questions/14050195/angularjs-what-is-the-difference-between-and-in-directive-scope – Tristan

+0

, вам, вероятно, необходимо посмотреть scope.activeColor внутри директивы, может помочь вам лучше, если вы публикуете скрипку или фрагмент здесь – gaurav5430

ответ

0

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

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

$scope.$watch('activeColor', function (newValue, oldValue) { 
        if (newValue) { 
         //do something with new value 
        } 
       }); 
Смежные вопросы