저는 AngularJS를 처음 사용하면서 문제가 있습니다.
내가 통해 검색 송장의 JSON 배열을 가지고 $ HTTP GET 여기를 통해 반복되는 요청 :
<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>
문제는 송장의 배열을 제외하고 고객에 대한 정보를 저장하지 않는다는 것입니다 고객의 참조 번호
그래서 참조 번호로 고객의 이름을 API에 쿼리하는 getCustomer
이라는 함수를 만들었습니다.
error: [$rootscope:infdig] 10 $digest() iterations reached. aborting! watchers fired in the last 5 iterations: []
후, 나는이 작업을 수행 할 수있는보다 효율적인 방법을 알아낼 것이다하지만이 오류의 원인이 무엇인지 궁금 :
$scope.getCustomer = function(id) {
var customer_id = id.match(/\d+/)[0];
$http.post('/customers', customer_id).success(function(response) {
console.log(response);
});
};
문제이 오류를 수신하고 있습니까?
몇 가지 조사를 한 후에 목록 항목 중 하나의 데이터가 변경되면 AngularJS는 모든 목록 항목을 검사해야한다는 사실과 관련이 있다고 생각합니다. 아직도, 나는 매우 혼란 스럽다. 이 일을 올바르게 수행하는 방법은 무엇입니까?
은에서 온다? 그 약간의 코드를 보여줄 수 있습니까? – maurycy
@RaphaelRafatpanah 당신은 귀하의 데이터 구조 (즉, 송장)에 대한 통찰력을 게시해야합니다. 그것은 무엇처럼 보입니다. "데이터"인덱서 란 무엇입니까? 인보이스 구조 등을 위해 2 레벨 중첩 배열을 사용하고 있습니까? – cleftheris
방금 귀하의 업데이트를 읽었습니다. 이것을 피하고 아이템을 컬렉션에 추가하거나 제거 할 때 ng-repeat를 새로 고치려면 다음과 같이 간단히 "track by"표기법을 사용할 수 있습니다 :'ng-repeat = "인보이스 추적에서 $ index" '. [ng-repeat] (https://docs.angularjs.org/api/ng/directive/ngRepeat)에 대한 angularjs 설명서를 참조하십시오. 중첩 된 항목의 필드가 변경 될 때마다 변경되는 계산 된 $ 해시를 기반으로 기본 구현이 새로 고쳐집니다. – cleftheris