Brauchen Sie Hilfe, um meinen Fehler zu verstehen/Daten auf der Seite anzuzeigen.ng-repeat zeigt keine Daten beim Abruf über Werksdienst an
Ich ging durch fast jede Frage im Forum sagen "ng-Wiederholung funktioniert nicht". Aber immer noch nicht in der Lage, die Antwort zu finden.
(Bitte beachten Sie: Zum ersten Mal habe ich versucht, Daten mit $ http durch die Schaffung von Fabrik-Service zu holen) an meinem unten JavaScript-Code (Modul, Controller und Fabrik an einer Stelle definiert)
Bitte werfen Sie einen Blick
//App declaration
var myApp = angular.module("appLeadsLogRpt", []);
//Controller declaration
myApp.controller('controllerLeadsLogRpt', ['dataService', fncontrollerLeadsLogRpt]);
function fncontrollerLeadsLogRpt(dataService) {
var vm = this;
//Table headers
vm.TableHeaders = ["Lead Id", "Source", "Create Date", "Status", "Contact Id", "Customer Name", "AssignedTo", "Mail Content", "Closed Reason", "Last Lead Note"];
dataService.getAllData()
.then(getData,null)
.catch(showError);
function getData(data) {
vm.LeadsLogRptData = JSON.parse(data);
//console.log(JSON.parse(data));
}
function showError(errMsg) {
console.log(errMsg);
}
}
//Factory Service to fetch data
myApp.factory('dataService', ['$http', DataService]);
function DataService($http) {
return {
getAllData: GetAllData
};
function GetAllData() {
return $http({
method: 'get',
url: 'DataHandler.ashx?method=leadsReport&listId=504473'
})
.then(sendResponseData)
.catch(sendError)
}
function sendResponseData(response) {
return response.data;
}
function sendError(response) {
return response.status;
}
}
</script>
Und meine Html wie unten:
<div id="DvContent" style="width:100%" data-ng-app="appLeadsLogRpt">
<div style="width:100%;" data-ng-controller="controllerLeadsLogRpt as vm1">
<input type="text" id="txtJsonData" value='<%=jsonLeadsLogRpt %>' style="display:none" />
<div><h3>Leads Log Report</h3></div>
<div style="text-align:right;margin-bottom:2px;padding-right:2px;">
<a href="javascript:void(0);" data-ng-click="ExportToExcel();"><img src="/mp_images/excelicon.gif" border=0 width=22 height=22 alt="Open in Excel"></a>
</div>
<div id="divExportToExcel">
<table style="width:100%" id="tblLeadLogRpt" class="table table-bordered">
<thead>
<tr style="background-color:#CCCCCC">
<th data-ng-repeat="item in vm1.TableHeaders" class="ng-cloack">{{item}}</th>
</tr>
</thead>
<tbody>
<tr data-ng-repeat="item1 in vm1.LeadsLogRptData">
<td class="ng-cloack">{{item1.A_LeadId}}</td>
<td class="ng-cloack">{{item1.B_Source}}</td>
<td colspan="8"></td>
</tr>
<tr data-ng-if="LeadsLogRptData.length==0"><td colspan="10">Data Not Found</td></tr>
</tbody>
</table>
</div>
</div>
</div>
Wenn ich fest codierte Daten gebe, die vom Server zu ng-repeat zurückgegeben werden, funktioniert es einwandfrei
Bitte lassen Sie mich wissen, was ich falsch mache.
Noch eine Frage.
In Fabrik holt I-Daten von get-Methode von $ http Aufruf
Wenn ich es durch Post-Methode aufgerufen werden soll, wie gehe ich params?
In Jquery, mache ich es folgenden Weg.
$.ajax({
url: 'AbcdHandler.ashx',
type: 'POST',
data: {
'method': 'ABCData',
'StartDate': startDate,
'EndDate': endDate
},
success: function (result) {
return JSON.parse(result);
},
error: OnError
});
Vielen Dank im Voraus für das Lesen und Helfen.
Meine letzte Beobachtung:
, wenn ich Daten auf der Konsole zu schreiben, bekam dies. (siehe Funktion getData (data))
[{"A_LeadId": "426429", "B_Source": "LabX"}, {"A_LeadId": "429369", "B_Source": "LabX" }, {"A_LeadId": "430586", "B_Source": "Info"}, {"A_LeadId": "430589", "B_Quelle": "Info"}, {"A_LeadId": "433848", "B_Source" : "LabX"}, {"A_LeadId": "448592", "B_Source": "Info"}, {"A_LeadId": "451795", "B_Source": "Gebot"}, {"A_LeadId": "453008" , "B_Source": "Niedriges Gebot"}, {"A_LeadId": "453009", "B_Source": "Niedriges Gebot"}, {"A_LeadId": "453010", "B_Source": "Niedriges Gebot"}, { "A_LeadId": "455736", "B_Source": "Info"}, {"A_LeadId": "455743", "B_Quelle": "Info"}, {"A_LeadId": "457030", "B_Quelle": "Info "}, {" A_LeadId ":" 457052 "," B_Source ":" LabX "}, {" A_LeadId ":" 461503 "," B_Source ":" Manuell eingegeben "}]
Wenn ich das kopiere und direkt Zu vm.LeadsLogRptData zuweisen, System zeigt mir die Ausgabe auf dem Bildschirm pro perlig. z.B. vm.LeadsLogRptData = [{"A_LeadId": "426429", "B_Source": "LabX"}, ......];
Eine weitere Sache. Wenn ich Länge der Daten zu überprüfen, zeigt es mir 621. ({{vm.LeadsLogRptData.length}})
Eigentlich gibt es nur 15 geschweiften Klammern Paar ({}) und System sollte mir zeigen Länge als 15
Ich hoffe, ich erkläre mein Problem richtig.
(etwas benötigen, die richtig meine Daten umwandelt im JSON-Format)
Danke,
Ich habe antworten
Nur eval mit JSON.parse und Startsystem Anzeigen von Daten richtig z vm.LeadsLogRptData = eval (JSON.parse (Daten));
Wer bitte erklären Sie mir die Logik dahinter?
Danke an alle, die bisher gelesen und geantwortet haben.
Sie sind nicht sehr klar, was Sie mit "Wenn ich hart codierte Daten vom Server zurückgeben zuweisen". Und was bekommen Sie in dieser Konsolenanweisung 'console.log (JSON.parse (data));'? – Sajan
Sajan, Bitte beachten Sie den Abschnitt "Meine letzte Beobachtung". Hoffnung, die dir hilft, mein Problem zu verstehen. Danke – user3172224