- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 AngularJS 的新手,遇到了一个问题。
我有一个通过 $http GET 请求检索到的发票的 JSON 数组,该请求在此处循环:
<a ng-repeat="invoice in invoices" href="#" class="list-group-item">
{{ invoice[data]["TxnDate"][0] }} -
{{ invoice[data]["DocNumber"][0] }} -
${{ invoice[data]["TotalAmt"][0] }} -
{{ getCustomer(invoice[data]["Id"][0]) }}
<i class="fa fa-chevron-right pull-right"></i>
<i class="pull-right">Edit</i>
</a>
问题是除了客户的引用号外,发票数组不存储有关客户的任何信息。
因此,我创建了一个名为 getCustomer
的函数,它通过客户的引用号在我的 API 中查询客户的姓名。
$scope.getCustomer = function(id) {
var customer_id = id.match(/\d+/)[0];
$http.post('/customers', customer_id).success(function(response) {
console.log(response);
});
};
问题是我收到这个错误:
error: [$rootscope:infdig] 10 $digest() iterations reached. aborting! watchers fired in the last 5 iterations: []
稍后,我会想出一种更有效的方法来执行此操作,但我很想知道是什么导致了此错误?
经过研究,我认为这与以下事实有关:一旦其中一个列表项中的数据发生变化,AngularJS 需要检查所有列表项。尽管如此,我还是很困惑。这样做的正确方法是什么?
最佳答案
问题与在绑定(bind)中使用函数有关(插值 {{}})。由于其性质,angularjs 会不断观察 $scope( View 模型)的变化。因此,如果您不小心,您可能会绑定(bind)到一个总是返回对象的新/不同实例的函数。这会触发一个无限循环,angular 将其识别为错误并禁用绑定(bind)以避免计算溢出。如果说您更改了函数以将返回的客户存储到局部变量,则可以避免该问题。
这是一个完整的片段。
var app = angular.module('main', []);
app.controller('MainCtrl', function($scope, $http, $q) {
$scope.invoices = [
{ Id: "1", TxnDate: new Date(2014, 6, 26), DocNumber: "I001234", TotalAmt: 200.34 },
{ Id: "2", TxnDate: new Date(2014, 8, 2), DocNumber: "I000021", TotalAmt: 530.34 },
{ Id: "3", TxnDate: new Date(2014, 11, 15), DocNumber: "I000023", TotalAmt: 123 },
{ Id: "4", TxnDate: new Date(2014, 12, 11), DocNumber: "I000027", TotalAmt: 5000 },
];
var testUrl = 'http://echo.jsontest.com/company/AKME/firstName/John/lastName/Doe';
var _customerCache = {};
$scope.customerCache = _customerCache;
$scope.getCustomer = function(id) {
var deferred = $q.defer(); // defer
if (_customerCache[id])
return deferred.resolve(_customerCache[id]);
var customer_id = id.match(/\d+/)[0];
$http.get(testUrl + customer_id + '/id/'+ customer_id).success(function(response) {
console.log(response);
_customerCache[id] = response;
deferred.resolve(response);
});
return deferred.promise;
};
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="main" ng-controller="MainCtrl">
<ul>
<li ng-repeat="invoice in invoices" ng-init="getCustomer(invoice.Id)">
<a href="#" class="list-group-item">
{{ invoice.TxnDate | date }} -
{{ invoice.DocNumber }} -
{{ invoice.TotalAmt | currency }}
{{ customerCache[invoice.Id].firstName }} {{ customerCache[invoice.Id].lastName }}
</a>
</li>
</ul>
<span>customers via http</span>
<ul>
<li ng-repeat="cust in customerCache">
{{cust}}
</li>
</ul>
<div>
关于AngularJS - 错误 : [$rootscope:infdig] 10 $digest() iterations reached,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27485494/
我收到以下错误消息: Error in "if (reached.threshold < min.reached.threshold) {" : missing value wher
我收到以下错误消息: Error in "if (reached.threshold < min.reached.threshold) {" : missing value wher
根据 react-router-dom github 页面上的推荐,我开始将 @reach/router 用于一个新项目。不幸的是,看似非常简单的用例无法正常工作。我首先尝试将 @mui Bottom
为了能够使用 Keras 作为编程工具,有时需要查看方法的源代码。我知道 Keras 中的每个功能都是公开实现的,并且可供公众访问。但不幸的是,在您没有足够的经验之前,在网络上找到代码并非易事。例如
1. 我正在使用this指南来获取要运行的nginx Web服务器镜像,并使用了以下命令 docker run -p 8888:80 nginx docker run -p 80:80 nginx 我
我正在研究缩放功能。此缩放是一个具有 100% 窗口大小的固定框和一个具有固定框宽度 200% 的图像内部。 这个缩放需要像这样工作: 当光标位于窗口中心时,图像应位于中心。 当光标在右上角时,图像应
我对三个不同的路线使用相同的组件: 有没有办法把它结合起来,就像: 最佳答案 对于到达路由器:( https://reach.tech/router/exampl
我目前正在尝试创建 CSS 波纹效果。当我缩放按钮时,波纹不会到达按钮的边缘。波纹的增长速度对于每个按钮尺寸都是相同的。这是一个普通的按钮。按下按钮时添加 CSS。 这是我的 CSS 代码:
我在 Xcode 5 中遇到这个问题,我试图将文件提交到远程 git 存储库 (BitBucket) 并 pop 一个窗口,其中显示以下错误:“无法访问存储库“project_name”。请确认存储库
在 Facebook Insights UI 上有一个名为“Reach”的部分。使用 Insights API 的 page_impressions_unique(应该带有“Reach”值)我得到的值
R 的网络连接有问题。 library(curl) req sessionInfo() R version 4.0.3 (2020-10-10) Platform: x86_64-w64-mingw
我创建了一个 Django 项目和一个虚拟环境,我在我的 Ubuntu 服务器上安装了 python。当我尝试通过键入来运行开发服务器时 $ ./manage.py runserver 0.0.0.0
我已启用 SeriLog(最新版本)自记录功能,并且看到数百条消息说 Maximum destructuring depth reached 不知道这意味着什么以及这是否是我需要担心的问题。 有谁知道
我有一个应用程序,其中有 N 个不同的布局(例如 BeforeLogin、MainLayout、SomeElseLayout、等)。 每个布局都是一个 HTML 标记组件,应包装页面组件,例如 Set
当我导航到新页面时,Reach Router 会向下滚动到标题后面的页面内容(如果内容足够长)。我假设这是为了可访问性,但对于我的应用程序来说这不是必需的,而且实际上非常不和谐。可以禁用此行为吗? 请
使用 Reach 路由器(不是 React 路由器!)我有 2 个嵌套路由: /g/123/g/123/about 其中 123 是 :groupId 参数: import React from "r
我正在使用办公室网络来学习SAP HANA,要连接到HANA系统,我必须先连接到VPN,然后只有HANA系统才能上网。我配置了一个简单的项目 XS 应用程序,但是当我尝试运行它时,它显示以下错误: h
我有以下可以正常工作的 docker-compose 文件: version: '3' services: myfrontend: image: myregistry.azurecr.io/im1
我正在计算 Action 类中搜索屏幕中的页数。我需要从 1 迭代到显示带有链接的页码,但我找不到使用 执行此操作的方法。 Java 等效代码将是,请让我知道哪里有办法在带有 struts 2.0
我通过docker在三个数据中心(DC1、DC2和DC3)中设置了三个Cassandra节点(cas1、cas2和cas3)。我想使用 Java API 在 cas1 建立 session ,但连接失
我是一名优秀的程序员,十分优秀!