2017-03-23 1 views
0

Hallo Ich habe eine Situation hier,Angular JS Dual Input Directive UpDate View Wert

Ich habe eine Dual-Input-Direktive erstellt. Kannst du bitte im folgenden Szenario helfen. Wenn ich den Modellwert über den Controller in undefiniert ändere, werden die Ansichtswerte nicht gelöscht. Hier ist der Codes,

Meine Dual Input Richtlinie wird wie folgt,

angular.module("awcQuoteBuy.directives") 
    .directive('dualInput', function($timeout, inputValidationService) { 
    return { 
     restrict: 'E', 
     templateUrl: 'app/partials/common/doubleInput.html', 
     scope: { 
     modelValue: '=', 
     size: '@', 
     fieldError: '@', 
     blurFn: '&loseFocus' 
     }, 
     link: function postLink(scope, element, attrs, ctrl) { 

     scope.leftFocused = false; 
     scope.rightFocused = false; 

     scope.$watch('left', function(newVal, oldVal) { 
      if (newVal!==oldVal) { 
      var tmp = (newVal) ? inputValidationService.formatNumber(newVal+'') : ''; 
      scope.modelValue = tmp + '|'+ scope.getOtherValue(scope.right); 
      } 
     }); 

     scope.$watch('right', function(newVal, oldVal) { 
      if (newVal!==oldVal) { 
      var tmp = (newVal) ? inputValidationService.formatNumber(newVal+'') : ''; 
      scope.modelValue = scope.getOtherValue(scope.left) + '|' + tmp; 
      } 
     }); 

     scope.getOtherValue = function(value) { 
      return (value && value!=='') ? inputValidationService.formatNumber(value+'') : ''; 
     }; 

     //will set the value initially 
     $timeout(function() { 
      if (!scope.modelValue || scope.modelValue===null) { 
      scope.modelValue = ''; 
      } 
      if (scope.modelValue!=='') { 
      var splitIndex = scope.modelValue.indexOf('|'); 
      if (splitIndex>=0) { 
       var values = scope.modelValue.split('|'); 
       scope.left = values[0]; 
       scope.right = values[1]; 
      } else { 
       scope.left = scope.modelValue; 
      } 
      } 
     }); 

     /* 
     Below functions will add on-blur (lose focus) support to both fields. 
     */   
     scope.focusLeft = function() { 
      scope.leftFocused = true; 
     }; 

     scope.blurLeft = function() { 
      scope.leftFocused = false; 
      $timeout(function() { 
      if (!scope.rightFocused) { 
       scope.blurFn(); 
      } 
      }, 100); 
     }; 

     scope.focusRight = function() { 
      scope.rightFocused = true; 
     }; 

     scope.blurRight = function() { 
      scope.rightFocused = false; 
      $timeout(function() { 
      if (!scope.leftFocused) { 
       scope.blurFn(); 
      } 
      }, 100); 
     }; 

     } 
    }; 
    }); 

Das HTML-Stück Code wird wie folgt,

<dual-input model-value="dualInput[$index]" ng-switch-when="DUAL_NUMBER" size="{{q.length}}" 
       field-error="{{q.invalid || (nextClicked && !validateGeneralQuestion(acc.memberId, q))}}" id="{{'gQDual'+$index}}" 
       lose-focus="saveGeneralAnswer(acc.memberId, q)"></dual-input> 

In My-Controller, wenn Ich setze den Bereichswert auf undefined oder Null, die eingegebenen Werte in der Ansicht werden nicht gelöscht. Bitte helfen Sie mir hier, was ich sollte diesen Wert löschen tun

$scope.dualInput[$index]=undefined; 
+0

Kann mir jemand helfen, wie die Ansicht Wert zu aktualisieren, wenn der Umfang Wert geändert wird. Oder render die Felder. – Harry

Antwort

0

Die Richtlinie selbst die automatische Initialisierung Funktion erhalten hat. Also musste ich die Direktive immer wieder rendern, wenn ich reinitialisieren wollte.

Wenn Sie möchten, Benutzer-Abfrage explizit aktualisieren. $ SetViewvalue = „“