ng视图路由模板是否反映了ajax请求所做的更改

Does a ng-view routed template reflect the changes made as a result of a ajax request?

本文关键字:请求 ajax 路由 视图 是否 ng      更新时间:2023-09-26

我在这个模板中有一个表,它正在根据ajax请求进行更新。最初,此表为空。当我点击触发请求的按钮时,数据流会很好,但不会反映在表上。该表根本没有显示。

此外,我还有一个加载程序,它在触发ajax请求时显示。当我把html的这些部分放在ng-view模板中时,即使这样也不起作用。ng-view不应该这样使用吗?如果是,AngularJS中是否有其他替代方案来解决此模板问题?

index.html:包含被something.html 替换的ng-viewdiv

core.js:我有一个get请求,通过单击index.html中的某个按钮将数据获取到我的"tables"变量中。我已经检查(使用console.log)数据是否正确并被存储,问题是数据的这种变化没有反映在网站上。

something.html:包含使用ng-repeat显示表格的代码。

我认为没有代码(这里或jsfiddle)我们无法提供帮助,但我想说的是:

  1. 我认为这与ng-view无关;

  2. 是的,至少有一个很好的替代方案可以取代ng-view——它是ui路由器(它提供ui-view)。Ui路由器功能更强大,但更复杂。出于您的目的,ui路由器有一个resolve部分,您应该在其中放置页面加载之前应该完成的所有请求;

  3. 此外,如果您需要在ajax bsed表中进行排序、过滤和更丰富的功能,那么使用ngTables库将是一个不错的选择。

  4. 也许问题是您没有将数据提供给html。我认为,当您将数据从服务器获取到data变量中时,应该通过作用域将其提供给html:$scope.data = data;

之后,您将能够在类似<div ng-bind="data"></div> 的html中使用它

  1. 你是如何进行AJAX调用的?您使用$http还是$resource服务?如果没有(例如,如果您将其与jquery一起使用),则应该在此之后使用$scope.apply()

因此,在这种情况下,每次使用非角度工具更新数据时都应该调用$scope.apply()

附言:你可能会问为什么不<div>{{data}}</div>。你知道,这可能是一样的,但angular开发人员建议在可能的情况下总是使用ng-bind而不是{{var}}(看看这个问题)。