2016-11-20 3 views
0

Ich mache ein einfaches Programm mit .net Core und AngularJs + webApi Mein Api-Code wie unten Es gibt keine Js Fehler nach dem Ausführen des Problems ist Factory Return nichts. wenn ich den Unterbrechungspunkt auf $ location.qwets = index.query() setze; meine "qwets" ist leer, die Länge von "qwets" ist 0. Die get-Methode arbeitet jedes Mal Seite aktualisieren aber Ergebnis ist nichts.AngularJs ist leere Liste

änderte ich den Code habe ich jetzt Ergebnisse in 'qwets' aber Index ist immer noch leer

Danke

// GET: api/values 
    [HttpGet] 
    public IEnumerable<ApplicationUser> Get() 
    { 
     return new List<ApplicationUser> { 
      new ApplicationUser {Id="test", Email="[email protected]" }, 
      new ApplicationUser {Id="tst2",Email="[email protected]" } 

     }; 
    } 

app.js Datei ist

(function() { 
'use strict'; 

angular.module('saniehhaApp', [ 
    // Angular modules 
    //'ngRoute' 

    // Custom modules 
    "indexService" 
    // 3rd Party Modules 

]); 
})(); 
(function() { 
'use strict'; 

angular 
    .module('saniehhaApp') 
    .controller('indexController', indexController); 

indexController.$inject = ['$location', 'index']; 

function indexController($location, index) { 
    index.query() 
    .$promise.then(function (result) { 
    $scope.qwets = result; 
} 
})(); 
(function() { 
'use strict'; 
var indexService = angular.module('indexService', ['ngResource']); 

indexService.factory('index', ['$resource', 
    function ($resource) { 
    return $resource('/api/index/', {}, { 
     query: 
      { 
       method: 'GET', 
       params: {}, 
       isArray: true 
      } 
    }); 
}]); 
})(); 

und meine index.html Datei

<!DOCTYPE html> 
<html ng-app="saniehhaApp"> 
<head> 
<meta charset="utf-8" /> 
<title>SampleTest</title> 

<script src="vendor/angular.min.js"></script> 
<script src="vendor/angular-resource.min.js"></script> 
<script src="vendor/angular-route.min.js"></script> 
<script src="scripts/app.js"></script> 
</head> 
<body ng-cloak> 
<div ng-controller="indexController"></div> 
<h2>list of users</h2> 
<ul> 
    <li ng-repeat="qwet in qwets"> 
     <p> "{{qwet.Id}}" - {{qwet.Email}}</p> 

    </li> 
</ul> 
</body> 
</html> 
+0

Können Sie die Registerkarte Netzwerk in der Entwicklerleiste überprüfen und sehen, ob der API-Aufruf erwartete Daten zurückgibt? Können die Antwortdaten in die Frage eingefügt werden? – sabithpocker

+0

Was Sie beschreiben, ist das Standardverhalten von '$ resource'. Die Anfrage ist asynchron, daher gibt '$ resource' zunächst ein leeres Array zurück, das dann ausgefüllt wird, wenn die Anfrage abgeschlossen ist. Es sei denn, Sie müssen etwas sofort im Controller tun, wenn Daten ankommen, sollte es kein Problem sein ... Beobachter in der Ansicht würden immer noch Dinge wie ng-repeat – charlietfl

+0

Problem wird $ Location und nicht $ Scope – charlietfl

Antwort

1

Sie verwenden $location und nicht $scope in der Steuerung, um die in der Ansicht benötigten Eigenschaften zuzuweisen. Der Blick sieht die Dinge nicht in $location

Wechsel zu

function indexController($scope, index) { 
    /* jshint validthis:true */ 
    $scope.qwets = index.query(); 
} 

Wie oben in den Kommentaren erwähnt, wird $ Ressource zunächst ein leeres Array zurück (oder Objekt), die anschließend aufgefüllt wird, wenn die tatsächliche Anforderung abgeschlossen und interne Beobachter werden dann Ansicht aktualisieren, wenn es

kommt

auch schlechtes Ende "div" in HTML-ng-Wiederholung nicht in div Controller