[英]the form doesn't send updated input value
在我的页面上有bs表。 数据来自api调用。 通过单击行,我发送新的api调用以从db检索行数据。 然后我为res数据设置范围变量并将其呈现在页面上
$('#table').on('click-row.bs.table', function (e, row, $element) {
$('.success').removeClass('success');
$($element).addClass('success');
var indexId = $table.find($element).data('index');
var rowData = $table.bootstrapTable('getData')[indexId];
$scope.id = rowData.id;
$http.get(url + $scope.id)
.then(function (res) {
$scope.rowData = res.data.model;
console.log($scope.rowData);
$scope.rowKeys = Object.keys($scope.rowData);
});
$scope.$apply();
});
的HTML:
<form style="padding: 15px" ng-submit="submitForm()">
<div class="form-group row">
<div ng-repeat="k in rowKeys | filter: '!id'" ng-model="rowValue">
<label for="rowValue" class="col-sm-2">
<!--{{k | hide:'.name'}}:-->
{{k }}:
</label>
<div class=" col-sm-2">
<input class="form-control rowValue" id="rowValue" value="{{rowData[k]}}"/>
</div>
</div>
</div>
<button type="submit" class="btn btn-default" ng-if="rowData" >Submit</button>
然后通过ng-submit,我要发回以该形式进行的更改
$scope.submitForm = function() {
$scope.$watch('rowData', function(newValue, oldValue) {
console.log('being watched oldValue:', oldValue, 'newValue:', newValue);
}, true);
$http({
method : 'PUT',
url : url + $scope.id,
data : $scope.rowData, //form
headers : {'Content-Type': 'application/json'}
})
.then(function (res) {
//console.log(res);
//console.log($scope.rowData);
return res;
});
};
如您所见,我已将$ watch设置为跟随作用域变量的更改,但是问题是控制台日志为oldValue和newValue返回相同的值。 谁能解释我的错误在哪里? 感谢您的帮助
您没有将值绑定到任何东西。 代替在输入元素上使用value="{{rowData[k]}}"
,请使用ng-model: ng-model="rowData[k]"
。
您正在调用$scope.$apply();
在请求有机会完成之前。 您需要放入$scope.$apply();
在 then()
回调中。
$http.get('stuff').then(function(response){
//stuff
$scope.$apply();
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.