2016-07-11 6 views
0

Ich habe ein Szenario, in dem ich die Sternfarben basierend auf Hover-Wert für das Anhängen der Farbe ändern müssen, verwende ich benutzerdefinierte Anweisung und für die Anzeige von Sternen ich bin ui -Rating (ui-Bootstrap)

html:

<uib-rating ng-model="rate" class="col-xs-3 star-color" max="max" read-only="isReadonly" on-hover="rating=value;hoveringOver(value)" star-color rating="rating" ng-click="viewPage||fnPutRating(rating)" on-leave="overStar = null" titles="['one','two','three']" aria-labelledby="default-rating"></uib-rating> 

hier star-color ist die benutzerdefinierte Richtlinie

Richtlinie:

angular.module('hrPortalApp') 
.directive('starColor', function() { 
    return { 
     restrict: 'A', 
     scope: { 
      rating: "=" 
     }, 
     link: function(scope, elem, attr) { 
      console.log($scope.rating); 
      switch (todoText) { 
       case "1": 
        elem.style.color='red' 
        break; 
       case "2": 
        elem.style.color='red' 
        break; 
       case "3": 
        elem.style.color='green' 
        break; 
       case "4": 
        elem.style.color='green' 
        break; 
       case "5": 
        elem.style.color='green' 
        break; 
      } 
     } 
    }; 
}); 

aber hier bin ich erhalte eine Fehlermeldung als

angular.js:13642 Error: [$compile:multidir] Multiple directives [starColor (module: hrPortalApp), uibRating (module: ui.bootstrap.rating)] asking for new/isolated scope on: <span ng-mouseleave="reset()" ng-keydown="onKeydown($event)" tabindex="0" role="slider" aria-valuemin="0" aria-valuemax="{{range.length}}" aria-valuenow="{{value}}" aria-valuetext="{{title}}" ng-model="rate" class="col-xs-3 star-color" max="max" read-only="isReadonly" on-hover="rating=value;hoveringOver(value)" star-color="" rating="rating" ng-click="viewPage||fnPutRating(rating)" on-leave="overStar = null" titles="['one','two','three']" aria-labelledby="default-rating"> 

Ich verstehe nicht, warum ich diese Störung erhalte Jede mögliche Hilfe würde sehr geschätzt werden.

Antwort

0

Sie können nicht mehrere Direktiven (in diesem Fall uibRating und starColor) haben, die nach einem neuen Bereich für dasselbe Element fragen.

Eine einfache Lösung wäre rating in der Link-Funktion zu analysieren: Verwenden Sie $parse(attr.rating)(scope) in Ihrer Link-Funktion.

+0

Dank für die Beantwortung, aber ich muss auf die Rating-Wert sehen, wenn es i anhängen müssen, um die Farbe ändert sich dann, dass nach Aber wenn ich $ parse (attr.rating) mache, bekomme ich "Bewertung", mit der ich den Wert nicht bekommen kann –