当前位置: 首页 > 面试题库 >

AngularJS $ http.get()。然后绑定到列表

许奇
2023-03-14
问题内容

我有一个看起来像这样的列表:

<li ng-repeat="document in DisplayDocuments()" ng-class="IsFiltered(document.Filtered)">
    <span><input type="checkbox" name="docChecked" id="doc_{{document.Id}}" ng-model="document.Filtered" /></span>
    <span>{{document.Name}}</span>
</li>

我将此列表绑定到控制器中:

$scope.Documents = $http.get('/Documents/DocumentsList/' + caseId).then(function(result) {
    return result.data;
});

当运行时,我没有任何结果。当我删除该then方法时,我得到三个空行,使计数正常,但是没有显示任何信息。

我知道“其他所有东西”都可以用,因为我以前用jQuery填充了列表,我在做什么错呢?

这是服务器的响应:

{Id:3f597acf-a026-45c5-8508-bc2383bc8c12, Name:ZZ_BL0164_Skisse BL0164_945111.pdf, Order:1,…}
{Id:46f51f1f-02eb-449a-9824-8633e8ae7f31, Name:ZB_BL0201_Firmaattest BL0201_945111.pdf, Order:1,…}
{Id:fddd1979-c917-4b32-9b83-b315f66984ed, Name:ZA_BL0228_Legitimasjonsskjema BL0228_945111.pdf,…}

问题答案:

$ http方法返回一个不能迭代的promise,因此您必须通过回调将结果附加到scope变量:

$scope.documents = [];
$http.get('/Documents/DocumentsList/' + caseId)
  .then(function(result) {
    $scope.documents = result.data;
});

现在,由于documents仅在获取结果之后才定义变量,因此您需要documents事先在范围上初始化变量:$scope.documents = []。否则,您的ng-repeat会阻塞。

这样,ng-repeat将首先返回一个空列表,因为documents数组最初是空的,但是一旦收到结果,ng-
repeat将再次运行,因为成功回调中的`documents’已经更改。

另外,您可能需要将ng-repeat表达式更改为:

<li ng-repeat="document in documents" ng-class="IsFiltered(document.Filtered)">

因为如果您的DisplayDocuments()函数正在调用服务器,则由于$ digest循环,此调用将被执行多次。



 类似资料:
  • 问题内容: 我有几个复选框: 我想绑定到控制器中的列表,以便每当更改复选框时,控制器都维护所有检查值的列表,例如。 ng-model似乎只能将一个复选框的值绑定到控制器中的变量。 还有另一种方法可以使四个复选框绑定到控制器中的列表吗? 问题答案: 有两种方法可以解决此问题。使用简单数组或对象数组。每个解决方案都有其优缺点。您会在下面找到每种情况的一种。 用简单的数组作为输入数据 HTML可能如下所

  • 我有几个复选框: 我希望绑定到控制器中的一个列表,这样,每当更改复选框时,控制器就会维护所有选中值的列表,例如,。 ng-model似乎只能将一个复选框的值绑定到控制器中的一个变量。 有没有另一种方法可以这样做,以便我可以将四个复选框绑定到控制器中的一个列表?

  • 我可以使用以下代码轻松地将数据绑定到div或pre标记: 但是,我想尝试将此数据绑定到隐藏表单输入,我尝试了: 这将返回以下错误: 所以很明显,在使用ng模型时,我不能使用| json。角度文档仍然有点稀疏,我似乎无法找到如何正确分配它,即使我可以?谢谢:) 我需要将这个json数据加载到我的金字塔应用程序中,并将其分配到一个隐藏的表单字段中,这似乎是最好的方法,或者我应该以另一种方式来做?

  • 问题内容: 我有一个执行http POST请求的函数。代码在下面指定。这很好。 我为http GET提供了另一个功能,我想将数据发送到该请求。但是我没有那个选择。 的语法是 获取(URL,配置) 问题答案: HTTP GET请求不能包含要发布到服务器的数据。但是,您可以将查询字符串添加到请求中。 angular.http为此提供了一个选项。 请参阅:http : //docs.angularjs.

  • 问题内容: 我知道您可以这样取消$ watch的绑定: 但是您可以在watch函数声明中取消绑定手表吗?因此,在手表执行一次之后,它会自行解除捆绑吗?就像是: 问题答案: 您可以按照已经执行的方法进行操作,在函数内部调用“ deregistration”:

  • 问题内容: 我希望仅使用硬编码JSON文件在本地进行开发。我的JSON文件如下(放入JSON验证程序时有效): 当JSON在工厂内部进行硬编码时,我已经使控制器,工厂和html正常工作。但是,现在我已经用$ http.get代码替换了JSON,它不起作用了。我已经看过$ http和$ resource的许多不同示例,但不确定去哪里。我正在寻找最简单的解决方案。我只是想为ng-repeat和类似指令