2016-10-24 8 views
1

wie ein Textbox-Wert basierend auf der Bedingung an den Controller übergeben wird. Wenn das Kontrollkästchen aktiviert ist, binden Sie das Textfeld mit dem Objektwert und übergeben Sie es an den Controller. Lassen Sie es einfach leer und übergeben Sie die Benutzereingabe an den Controller .. was ich tue funktioniert nicht. Was ist falsch mit meinem Code, es funktioniert in dem Fall, wenn das Kontrollkästchen aktiviert ist.Binden Sie einen Textbox-Wert, wenn das Kontrollkästchen aktiviert ist

$scope.Product = [ 
     {"ProductID":12,"LNumber":"hrx",weght:"2"}, 
     {"ProductID":13,"LNumber":"pty",weght:"1"} 
    ] 

<div> 
<div> 
    <input type="checkbox" data-ng-model="Copyknotes" /> 
    <span >Copy notes from</span> 
</div> 

<table data-ng-repeat="Item in Product track by $index">           
    <tr > 
    <td>            
     <input type="radio" name="groupName_{{Item.ProductID}}" data-ng-model ="Item.isSelected" /> 
    </td> 
    <td data-ng-if="Copyknotes == true"> 
     <input type="text" data-ng-model="Item.LNumber"> 
     </td> 
     <td data-ng-if="Copyknotes == false" id="hi"> 
     <input type="text" data-ng-model="Item.LNumber="""> 
     </td> 
     </tr> 
</table> 
</div> 
+0

vielleicht weil Copyknotes nicht definiert ist, wenn Checkbox nicht aktiviert ist? – jomsk1e

Antwort

2

verwenden Gerade

Daten-ng-init = ""

anstelle von

data-ng-model="Item.LNumber=""" 

Verwendung

data-ng-model="Item.LNumber" 


<table data-ng-repeat="Item in Product track by $index">           
    <tr > 
    <td>            
     <input type="radio" name="groupName_{{Item.ProductID}}" data-ng-model ="Item.isSelected" /> 
    </td> 
    <td data-ng-if="Copyknotes == true"> 
     <input type="text" data-ng-model="Item.LNumber"> 
     </td> 
     <td data-ng-if="Copyknotes == false" id="hi"> 
     <input type="text" data-ng-model="Item.LNumber" data-ng-init=""> 
     </td> 
     </tr> 
</table> 
1

Verwenden scope.function

<input type="checkbox" data-ng-model="Copyknotes" ng-change="changeValue(Copyknotes)" /> 

//Code should be inside Angular js controller 
$scope.changeValue = function(Copyknotes){ 
    if(Copyknotes) 
    { 
    //Manipulate text box value here 
    $scope.Item.LNumber = 'whatever'; 
    } 
} 
1

Hier ist ein Beispiel: https://plnkr.co/edit/3Vtl6roWfL1ZqaR2nEvf

<td data-ng-if="Copyknotes == false"> 
    <input type="text" data-ng-model="Item.NNumber" ng-init="Item.NNumber = ''"> 
</td> 

Der Ausdruck war falsch - Daten-ng-Modell = "Item.LNumber =" "" - Wenn Sie einen neuen Wert zuweisen möchten, können Sie Item.LNumber = "''" (zwei einfache Anführungszeichen in Anführungszeichen) verwenden, um Interferenzen mit t zu vermeiden ag Attribut "" Symbole. Ich habe ein lebendes Beispiel dafür gemacht, wie es gemacht werden könnte. Ich weiß nicht, ob Ihr Controller originale Werte für die Eingabe benötigt, daher werden neue Werte (wenn das Kontrollkästchen nicht markiert ist) in NNumber gespeichert. Sie können sie frei zu LNumber ändern, wenn Sie möchten. Außerdem wird die ng-init-Direktive verwendet, um den NNumber-Parameter des Objekts zu initiieren, wenn Eingaben in den View gerendert werden. Auch sollten Sie Copyknotes zum Vergleichen definieren. Oder schreibe deine Bedingungen wie ng-if = "Copyknotes", ng-if = "! Copyknotes".

0
<input type="checkbox" data-ng-model="Copyknotes" ng-change="changeValue(Copyknotes)" /> 

allererst entfernen, die Daten-ng-Modell und die Verwendung folgende:

 //Code should be inside Angular js controller 
     var oninput = null; 
     $scope.changeValue = function(Copyknotes){ 
      if(Copyknotes) 
      { 
      var oninput = document.getElementById("textbox").onchange =function(){ 
     $scope.item.LNumber = this.value; 
      } 
      //Manipulate text box value here 

      }else{ 
      $scope.Item.LNumber = ''; 
      oninput = null 
      } 
     } 
Verwandte Themen