Gewusst wie: Aktualisieren von Ng-repeat Mit AngularJs

Ich bin erstellen einer Tabelle mit wenigen Daten. Ich don ' T wollen, laden Sie alle Daten auf einmal. Also ich erstelle eine Schaltfläche auf der Ansicht, wenn der Benutzer klicken Sie auf, dass buttoon dann traf es den server und nehmen Sie die nächsten 4 Datensätze. Zu einer Zeit nur 4 Daten.

<div class="container" ng-controller="paginateEmail" >
    <div class="row" >
        <div class="panel panel-primary">
            <div class="panel-heading">
                <h3 class="panel-title">Fail Agent</h3>
            </div>
            <table class="table">
                <thead>
                <th>
                    Email
                </th>
                </thead>
                <tbody>
                    <tr ng-repeat="item in email1.emailList3">
                        <td>
                           {{item}}
                        </td>
                    </tr>
                </tbody>
            </table>
            <td>
                <form ng-controller="paginateEmail" ng-submit="submitForm()">
                    <button class="btn btn-default" type="submit">Previous</button>&nbsp;<button type="submit" class="btn btn-default">Next</button>
                </form>
            </td>
        </div>    
    </div>
</div>

- und controller-code ist -

basicInfo.controller("paginateEmail", function ($scope, $http) {
        $scope.email1 = {
            emailList3: []
        };
    var current=1    
    $scope.submitForm = function () {           
        $scope.email1.emailList3.length=0;
        $http({method: 'GET', url: "../Dashboard/failAgentsList?current="+current}).
            success(function (data) {
                var i = 0;                   
                for(i=0;i<data.list.length;i++){                        
                    $scope.email1.emailList3.push(data.list[i]);
                }                    
                current+=1
            });
        console.log(current)
    }
        $scope.submitForm();
    }
);

nach, dass die Daten erfolgreich gebunden, die mit dem Umfang.email1.emailList3 aber die Ansicht wird nicht aktualisiert. Ich möchte, dass nach dem anklicken der Schaltfläche weiter wird die Ansicht auch aktualisiert, mit neuen Daten, welche waren das binden der Schleife im controller.

Vielen Dank im Voraus.

  • Konnte Sie bewegen emailList3 werden direkt auf die $scope, d.h., $scope.emailList3 = []? Eckig ist nicht tief beobachten Sie Ihre Objekte, damit Sie nicht sehen, die änderung, aber wenn das array wurde direkt auf den Rahmen, es würde die Ansicht aktualisieren. Ansonsten könnten Sie nennen $scope.$apply() nach der for Schleife, aber ich würde versuchen, zu vermeiden, dass
  • $http gibt ein Versprechen, die behandelt werden können durch den Aufruf der Methode then. Verspricht sollte bereits integriert sein in das eckige Lebenszyklus; ich bin mir ziemlich sicher, dass, wenn Sie aktualisieren $scope.email1... in der Erfolgs-handler der Verheißung, sollte die Ansicht aktualisiert werden, ohne dass manuelle Aufruf $apply.
  • Ich habe einen kleinen Stift demonstrieren. $timeout gibt ein Versprechen, genau wie $http.
InformationsquelleAutor Md Samir | 2015-03-30
Schreibe einen Kommentar