【发布时间】:2015-12-18 11:15:30
【问题描述】:
今天早上,这个简单的问题让我心慌。我已经在 SO 上搜索了此问题的解决方案,但只找到了涉及将数据加载到 HTML 或刷新整个页面的解决方案。我正在尝试使用 jQuery 的 $.ajax 函数来刷新某些 HTML 元素。这些元素具有相同的类。我不想用 jQuery 将新数据加载到这些元素中;这是由 Angular 处理的。如果我手动刷新页面(根本没有 jQuery),新数据就在那里。但是,我想自动刷新这部分页面。我不想刷新整个页面。
到目前为止,我有这个:
setInterval('reloadPage()', 10000);
function reloadPage() {
$.ajax({
async: true,
dataType: 'json',
type: 'GET',
url: 'http://localhost:8080/app/rest/json',
error: function(err) {
console.log(err.statusText);
},
success: function() {
$('.mq').location.reload(true);
console.log($('.mq').location);
}
});
}
$('.mq').location.reload(true); 未定义。我知道我以两种方式错误地使用了reload:
- 奇怪的是,你不能将它与
('.mq').location一起使用...我觉得这应该是一个功能。 -
reload(true)强制从服务器重新加载页面,但我不确定每次重新加载时服务器是否正在提供页面,它只是在更新......我不知道,我对此很模糊。
我也尝试过$('.mq').load(url),但这只是为所有正在更新的 HTML 元素插入来自 URL 的第一个 JSON 元素。这不是我想要的,因为正确的值是由 HTML 中的 Angular 指令控制的(是的,我知道我应该为此使用控制器)。
那么,如何使用 jQuery 的 $.ajax 函数一次刷新多个 HTML 元素?
【问题讨论】:
-
您是否将结果绑定到您范围内的值?
-
@Malkus 我最初将它与
ng-init=mq.currentDepth绑定,其中mq在父ng-repeat中定义,currentDepth是正在使用其值的JSON 键。但似乎ng-init到目前为止一直在工作,因为来自服务器的数据也在 10 秒计时器上。我只是想在客户端自动同步它。 -
您正在使用 Angular,停止考虑“刷新页面”并开始考虑“更新数据模型”。当数据发生变化时,Angular 会重绘数据绑定的元素。
-
@DanielBeck 好的,我可以用
ng-model或ng-bind之类的简单指令来处理这个问题吗? -
...有点像?
ng-model允许您将数据绑定到表单元素,但这与您似乎在这里提出的问题相切。我想你可能想从stackoverflow.com/questions/14994391/… 开始,然后学习一些 Angular 教程(最好完全不使用 jQuery;这更像是一个障碍而不是 Angular 的帮助。)Angular 需要相当多的时间来适应;它不太适合只是潜入并尝试的方法。
标签: jquery html json ajax angularjs