我有代码在使用AJAX请求时完美地从数组中读取数据。但是,当我将对象推送到数组时,ng-repeat不会呈现新行,我必须刷新页面然后获取发送到服务器的数据。
为什么这样做? 感谢
function processError() {
var responseCode = 404;
var error = {};
error["client"] = document.getElementById('client').value;
error["errorMessage"] = document.getElementById('error-message').value;
error["simpleRes"] = document.getElementById('simple-fix').value;
error["fullRes"] = document.getElementById('full-fix').value;
error["reason"] = document.getElementById('reason').value;
var errorJson = JSON.stringify(error);
$.ajax({
url: "../ErrorChecker/rest/error",
type: "POST",
data: errorJson,
contentType: "application/json"
})
.done(function (data, statusText, xhr, displayMessage) {
$('.form').hide();
responseCode = xhr.status;
reloadData(data);
});
function reloadData(data) {
if (responseCode == 200) {
processPositiveResponse(data);
} else {
$('#negative-message').show(1000);
}
}
}
function processPositiveResponse(data) {
$('#positive-message').show(1000);
updateTable(data);
$('#errorTable').DataTable().destroy();
setupTable();
clearInputs();
console.log($scope.controller.errors);
}
function updateTable(data) {
$scope.controller.errors.push({
"id": data,
"client": document.getElementById('client').value,
"errorMessage": document.getElementById('error-message').value,
"simpleRes": document.getElementById('simple-fix').value,
"fullRes": document.getElementById('full-fix').value,
"reason": document.getElementById('reason').value
})
}
<tbody>
<tr ng-repeat="x in dataCtrl.errors">
<td class="collapsing">
<div class="ui toggle checkbox">
<input type="checkbox">
<label></label>
</div>
</td>
<td style="display: none">{{ x.id }}</td>
<td>{{ x.client }}</td>
<td>{{ x.errorMessage }}</td>
<td>{{ x.simpleRes }}</td>
<td>{{ x.fullRes }}</td>
<td>{{ x.reason }}</td>
</tr>
</tbody>
答案 0 :(得分:6)
那是因为你一起使用jQuery和Angular。不要那样做。 EVER。 Angular并不知道jQuery正在做什么,并且jQuery不知道Angular在DOM中生成了什么。解决方案:删除jQuery并使用Angular自己的$http
服务。
同样,请勿使用document.getElementById('full-fix').value
。你正在向Angular倾斜。 Angular 从数据生成 DOM,因此您无需选择 DOM元素来读取其值,因为该值已存在于您的数据中。
答案 1 :(得分:-1)
更新文件。使用范围适用于快速修复。不是这样做的方式imo。但它会快速解决您的问题。在我的手机上,如果我不忘记生病,请稍后更新此评论,并提供更多详细信息和最佳做法。目前,谷歌搜索范围申请将对您有所帮助。