2016-10-24 117 views
1

如何根据条件将文本框值传递给控制器​​。 如果复选框被选中,然后将文本框与对象值绑定,并传递给控制器​​,其他明智的只是留空,并将用户输入传递给控制器​​..我正在做的是不工作。如果复选框被选中,我的代码会出现什么问题呢?如果复选框被选中,则绑定文本框值

$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

也许是因为Copyknotes是不确定的,如果复选框未选中? – jomsk1e

回答

2

只需使用

数据-NG-INIT = “”

代替

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

使用

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

使用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

下面是一个例子: https://plnkr.co/edit/3Vtl6roWfL1ZqaR2nEvf

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

表达错 - 数据-NG-模型= “Item.LNumber =” “” - 如果你想分配一个新的值,你可以使用Item.LNumber =“''”(双引号内的两个单引号)来避免干扰t ag属性“”符号。我已经做出了一个如何完成的实例。不知道你的控制器是否需要输入的原始值,所以新值(当复选框未选中时)将保存到NNumber中。如果你愿意,你可以自由地将它们改为LNumber。另外,当输入渲染到视图中时,ng-init伪指令用于启动对象的NNumber参数。 你也应该定义Copyknotes进行比较。或者写下你的条件,如ng-if =“Copyknotes”,ng-if =“!Copyknotes”。

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

首先删除数据-NG模型和使用以下:

 //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 
      } 
     } 
相关问题