Javascript 观察一个ng模型,并将更改应用于ng中的另一个ng模型
我有以下工作案例- 在html中,我使用Javascript 观察一个ng模型,并将更改应用于ng中的另一个ng模型,javascript,angularjs,watch,Javascript,Angularjs,Watch,我有以下工作案例- 在html中,我使用ng repeat从API响应填充表数据。表中有两个不同的列,它们都具有不同的ng型号。一列将包含从响应中获得的数据,而另一列在加载表时为空 我要寻找的是当用户在第二列中输入一些值并保存数据时,数据应该反映在第一列中 我在循环中使用了$watch,但显然在循环的最后一次迭代中获得的值被存储并反映在第一列中。我还研究了watchGroup,但这对于Angular 1.3及以上版本有效,而我使用的版本是1.1 HTML- <div ng-repeat="
ng repeat
从API响应填充表数据。表中有两个不同的列,它们都具有不同的ng型号。一列将包含从响应中获得的数据,而另一列在加载表时为空
我要寻找的是当用户在第二列中输入一些值并保存数据时,数据应该反映在第一列中
我在循环中使用了$watch
,但显然在循环的最后一次迭代中获得的值被存储并反映在第一列中。我还研究了watchGroup,但这对于Angular 1.3及以上版本有效,而我使用的版本是1.1
HTML-
<div ng-repeat="data in response">
<table>
<tr ng-repeat="dt in data track by $index">
<td>
<input id="oldValue_{{$index}}" ng-model="dt.oldValue[$index]" />
</td>
<td>
<input id="newValue_{{$index}}" ng-model="newValue[$index]" />
</td>
<td>
{{dt.otherData}}
</td>
</tr>
</table>
</div>
<div>
<button type="button" class="btn btn-primary" value="save" ng-click="saveData()">Save</button>
<button type="button" class="btn btn-primary" value="save" ng-click="cancel()">Cancel</button>
</div>
你想要这样的吗?它只是一个简单的例子,需要根据您的响应数据进行更改
var MyApp=angular.module(“MyApp”,[]);
控制器(“MyCtrl”[“$scope”,MyCtrl]);
函数MyCtrl($scope){
$scope.data=[1,2,3,4,5];
$scope.newValue=[];
$scope.saveData=函数(){
如果($scope.newValue.length>0){
forEach($scope.newValue,函数(v,k){
$scope.data[k]=v;
});
}
}
}
{{dt}}
{{dt.otherData}
拯救
取消
用户是否为ng-Model2列的每一行输入值?这将相应地反映出来吗?你能给出$scope.response吗object@JinsPeter不需要为每一行输入,这完全取决于用户。另外,我在图中显示的表格是一小部分,我的实际案例有40多行。假设用户在不同的行输入10个值,例如行-1到5、10、15到18,那么这些数据应该反映到相应行的第一列。对于$scope.response对象,它是一个API调用响应,该对象太大,无法在此处共享。还是让我试着分享一个紧凑版本的响应。我只是想知道你的控制器中新的newValue数组在哪里。$scope.newValue是否在每次调用$watch时都给newValue数组id检查??我的意思是你是否检查了每次迭代传递的newValue['+j+']'值?我的例子中的用法与你显示的非常相似。然而,我正在寻找使用美元手表在我的情况下。但使用您的方法,即angular.forEach,我对代码进行了一些更改,它对我起到了作用。所以我会接受你的回答,因为我的问题已经用你的方法解决了。我会这样建议。如果要在不发生任何事件的情况下更新对象,请使用$watch。。但这里有click事件,所以使用angular.forEach。而且$watch在更复杂的时候会降低性能。哦,谢谢!而且名单很长,大约有40-50条;在这种情况下,使用$watch会在某种程度上阻碍性能吗?@Trivedi是的。
angular.module("MyApp",[])
.controller("MyCtrl",[]);
function MyCtrl() {
$scope.saveData = function() {
for(var i=0; i<$scope.response.length; i++) {
for(var j=0: j<$scope.response[i].innerData.length; j++) {
var oldData = document.getElementById("oldValue_"+j).value;
var newData = document.getElementById("newValue_"+j).value;
if(newData > 0) {
$scope.$watch('newValue['+j+']', function(newVal) {
$scope.dt.oldValue[j] = newVal;
},true);
}
}
}
}
}
{
"id": 1,
"OuterData": [
{
"InnerId": 4,
"InnerData": [
{
"CollectionId": 35,
"CollectionData": [
{
"DataId": 81,
"CoreData": [
{
"quantityUnitName": "Unit_1",
"quantityUnitSymbol": "UnitSymbol_1",
"dataUpdateDateTime": "2017-04-27T05:28:11Z",
"lastReadingDateTime": "2017-04-29T14:57:42Z",
"measurementData": 400.0
}
]
}
],
"ExtraData": [
{
"quantityUnitName": "Unit_1",
"quantityUnitSymbol": "UnitSymbol_1",
"dataUpdateDateTime": "2017-04-27T05:28:11Z",
"lastReadingDateTime": "2016-05-01T00:01:40Z",
"measurementData": 521103.0
},
{
"quantityUnitName": "Unit_1",
"quantityUnitSymbol": "UnitSymbol_1",
"dataUpdateDateTime": "2017-04-27T05:28:11Z",
"lastReadingDateTime": "2016-05-01T00:01:40Z",
"measurementData": 24814.428571428572
}
]
},
{
"CollectionId": 24,
"CollectionData": [
{
"DataId": 58,
"CoreData": [
{
"quantityUnitName": "Unit_2",
"quantityUnitSymbol": "UnitSymbol_1",
"dataUpdateDateTime": "2017-04-27T05:28:11Z",
"lastReadingDateTime": "2017-04-26T08:50:00Z",
"measurementData": 9925.0
}
]
},
{
"DataId": 57,
"CoreData": [
{
"quantityUnitName": "Unit_2",
"quantityUnitSymbol": "UnitSymbol_1",
"dataUpdateDateTime": "2017-04-27T05:28:11Z",
"lastReadingDateTime": "2017-04-26T08:50:00Z",
"measurementData": 46285.0
}
]
},
{
"DataId": 56,
"CoreData": [
{
"quantityUnitName": "Unit_2",
"quantityUnitSymbol": "UnitSymbol_1",
"dataUpdateDateTime": "2017-04-27T05:28:11Z",
"lastReadingDateTime": "2017-04-26T08:50:00Z",
"measurementData": 13465.0
}
]
}
],
"ExtraData": [
{
"quantityUnitName": "Unit_2",
"quantityUnitSymbol": "UnitSymbol_1",
"dataUpdateDateTime": "2017-04-27T05:28:11Z",
"lastReadingDateTime": "2016-05-01T00:01:40Z",
"measurementData": 1561344.0
},
{
"quantityUnitName": "Unit_2",
"quantityUnitSymbol": "UnitSymbol_1",
"dataUpdateDateTime": "2017-04-27T05:28:11Z",
"lastReadingDateTime": "2016-05-01T00:01:40Z",
"measurementData": 21685.333333333332
}
]
},
{
"CollectionId": 30,
"CollectionData": [
{
"DataId": 76,
"CoreData": [
{
"quantityUnitName": "Unit_3",
"quantityUnitSymbol": "UnitSymbol_1",
"dataUpdateDateTime": "2017-04-27T05:28:11Z",
"lastReadingDateTime": "2017-03-21T14:00:00Z",
"measurementData": 16370.0
}
]
}
],
"ExtraData": [
{
"quantityUnitName": "Unit_3",
"quantityUnitSymbol": "UnitSymbol_1",
"dataUpdateDateTime": "2017-04-27T05:28:11Z",
"lastReadingDateTime": "2016-05-01T00:01:40Z",
"measurementData": 301720.0
},
{
"quantityUnitName": "Unit_3",
"quantityUnitSymbol": "UnitSymbol_1",
"dataUpdateDateTime": "2017-04-27T05:28:11Z",
"lastReadingDateTime": "2016-05-01T00:01:40Z",
"measurementData": 15086.0
}
]
}
]
},
{
"InnerId": 3,
"InnerData": [
{
"CollectionId": 20,
"CollectionData": [
{
"DataId": 40,
"CoreData": [
{
"quantityUnitName": "Unit_4",
"quantityUnitSymbol": "UnitSymbol_2",
"dataUpdateDateTime": "2017-04-27T05:28:11Z",
"lastReadingDateTime": "2017-04-01T10:39:00Z",
"measurementData": 0.0
}
]
}
],
"ExtraData": [
{
"quantityUnitName": "Unit_4",
"quantityUnitSymbol": "UnitSymbol_2",
"dataUpdateDateTime": "2017-04-27T05:28:11Z",
"lastReadingDateTime": "2016-05-01T00:01:40Z",
"measurementData": 0.0
},
{
"quantityUnitName": "Unit_4",
"quantityUnitSymbol": "UnitSymbol_2",
"dataUpdateDateTime": "2017-04-27T05:28:11Z",
"lastReadingDateTime": "2016-05-01T00:01:40Z",
"measurementData": 0.0
}
]
},
{
"CollectionId": 18,
"CollectionData": [
{
"DataId": 35,
"CoreData": [
{
"quantityUnitName": "Unit_5",
"quantityUnitSymbol": "UnitSymbol_3",
"dataUpdateDateTime": "2017-04-27T05:28:11Z",
"lastReadingDateTime": "2017-04-18T11:05:22Z",
"measurementData": 0.001135
}
]
}
],
"ExtraData": [
{
"quantityUnitName": "Unit_5",
"quantityUnitSymbol": "UnitSymbol_3",
"dataUpdateDateTime": "2017-04-27T05:28:11Z",
"lastReadingDateTime": "2016-05-01T00:01:40Z",
"measurementData": 0.001135
},
{
"quantityUnitName": "Unit_5",
"quantityUnitSymbol": "UnitSymbol_3",
"dataUpdateDateTime": "2017-04-27T05:28:11Z",
"lastReadingDateTime": "2016-05-01T00:01:40Z",
"measurementData": 0.001135
}
]
},
{
"CollectionId": 40,
"CollectionData": [
{
"DataId": 36,
"CoreData": [
{
"quantityUnitName": "Unit_5",
"quantityUnitSymbol": "UnitSymbol_3",
"dataUpdateDateTime": "2017-04-27T05:28:11Z",
"lastReadingDateTime": "2017-04-18T11:05:22Z",
"measurementData": 1.132728
}
]
}
],
"ExtraData": [
{
"quantityUnitName": "Unit_5",
"quantityUnitSymbol": "UnitSymbol_3",
"dataUpdateDateTime": "2017-04-27T05:28:11Z",
"lastReadingDateTime": "2016-05-01T00:01:40Z",
"measurementData": 1.132728
},
{
"quantityUnitName": "Unit_5",
"quantityUnitSymbol": "UnitSymbol_3",
"dataUpdateDateTime": "2017-04-27T05:28:11Z",
"lastReadingDateTime": "2016-05-01T00:01:40Z",
"measurementData": 1.132728
}
]
},
{
"CollectionId": 10,
"CollectionData": [
{
"DataId": 2,
"CoreData": [
{
"quantityUnitName": "Unit_6",
"quantityUnitSymbol": "UnitSymbol_4",
"dataUpdateDateTime": "2017-04-27T05:28:11Z",
"lastReadingDateTime": "2017-04-14T01:29:00Z",
"measurementData": 120.0
}
]
}
],
"ExtraData": [
{
"quantityUnitName": "Unit_6",
"quantityUnitSymbol": "UnitSymbol_4",
"dataUpdateDateTime": "2017-04-27T05:28:11Z",
"lastReadingDateTime": "2016-05-01T00:01:40Z",
"measurementData": 15508.363130715883
},
{
"quantityUnitName": "Unit_6",
"quantityUnitSymbol": "UnitSymbol_4",
"dataUpdateDateTime": "2017-04-27T05:28:11Z",
"lastReadingDateTime": "2016-05-01T00:01:40Z",
"measurementData": 1.2595113401052451
}
]
}
]
}
]
}