如何根据条件将文本框值传递给控制器。 如果选中复选框然后将文本框与对象值绑定并传递给控制器,则将其留空并将用户输入传递给控制器..我正在做什么不起作用。如果选中复选框,我的代码会出现问题。
$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 :(得分: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 :(得分: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';
}
}
答案 2 :(得分: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>
表达式错误 - data-ng-model =&#34; Item.LNumber =&#34;&#34;&#34; - 如果您想分配新值,你可以使用Item.LNumber =&#34;&#39;&#39;&#34; (双引号内的两个单引号)以避免干扰标记属性&#34;&#34;符号。我已经做了一个如何做到的实例。不知道您的控制器是否需要原始输入值,因此新值(取消选中复选框时)将保存为NNumber。如果需要,您可以自由地将它们更改为LNumber。此外,当输入呈现到视图中时,ng-init指令用于启动对象的NNumber参数。 您还应该定义Copyknotes进行比较。或者写下你的条件,如ng-if =&#34; Copyknotes&#34;,ng-if =&#34;!copyknotes&#34;。
答案 3 :(得分:0)
<input type="checkbox" data-ng-model="Copyknotes" ng-change="changeValue(Copyknotes)" />
首先删除data-ng-model并使用以下内容:
//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
}
}