ng-view路由模板是否反映了ajax请求所做的更改?

时间:2016-03-24 08:51:19

标签: javascript angularjs

我在这个模板中有表,正在更新ajax请求。最初这个表是空的。当我点击触发请求的按钮时,数据流正常,但它没有反映在表格上。该表根本没有显示。

我还有一个加载器,它会在触发ajax请求时显示。当我将html的这些部分放在ng-view模板中时,即使这样也行不通。 ng-view不应该像这样使用吗?如果是,AngularJS中还有其他替代方法可以解决这个模板问题吗?

的index.html : 包含ng-view div,由something.html

替换

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

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

1 个答案:

答案 0 :(得分:0)

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

  1. 我认为这不是ng-view;

  2. 是的,至少有一个替代ng-view的好方法 - 它是ui-router(它提供ui-view)。 Ui-router功能更强大,但更复杂。为了您的目的,ui-router有一个resolve部分,您应该在页面加载之前放置应该完成的所有请求;

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

  4. 也许问题是您没有将数据提供给html。 我告诉你,当你从服务器获取数据到data变量时,你应该通过范围将它提供给html:$scope.data = data;

  5. 之后,您将能够在<div ng-bind="data"></div>

    等html中使用它
    1. 你如何进行AJAX通话?您使用$http还是$resource服务?如果不是(例如,如果您将其与jquery一起使用),则应在此之后使用$scope.apply()
    2. 因此,在这种情况下,每次使用非角度工具更新数据时都应调用$scope.apply();

      P.S。你可能会问为什么不<div>{{data}}</div>。你知道,它可能是相同的,但有角度的开发人员建议在可能时使用ng-bind代替{{var}}(查看this question)。