2016-10-24 118 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 
      } 
     } 
相關問題