Ich habe AngularJS für ein experimentelles Projekt versucht und ich kam mit diesem Problem. In meinem html mag ich, dass ich mit einem einfachen Controller
Index.HTML
<h1>Some list</h1>
<div ng-controller="datlist">
<div ng-repeat="item in items">
<div>Item description: {{item.description}}</div>
<div>Item name: {{item.name}}</div>
</div>
</div>
zunächst eine Liste der Elemente anzuzeigen, diese Informationen und aktualisiert, um die Ansicht zu erhalten nur mit:
controllers.js (original)
function datlist($scope,$http){
$http({method: 'GET', url: 'http://localhost:61686/getdatlist?format=json', headers: {'Access-Control-Allow-Origin': 'localhost:*'}}).
success(function(data, status, headers, config) {
$scope.items=data.itemsToReturn;
console.log(data);
}).
error(function(data, status, headers, config) {
console.log("fail");
});
}
Das funktionierte ziemlich gut und ich konnte die Liste der Gegenstände bekommen. Indem ich meine Struktur ändere, um eine Factory zu verwenden, um die gleiche Anfrage zu stellen und sie an $ scope.items zu binden, funktioniert es nicht. Ich habe viele Variationen von $ watch ausprobiert, aber ich konnte es nicht dazu bringen, $ scope.items zu aktualisieren. Ich habe etwas über $ gefunden, aber ich kann wirklich nicht verstehen, wie man es benutzt.
controllers.js (neu)
var datModule = angular.module('datModule',[]);
datModule.controller('datlist', function ($scope, datfactory){
$scope.items = datfactory.getlist();
$scope.$watch($scope.items, $scope.items = datfactory.getlist());
});
datModule.factory('datfactory', function ($http){
var factory = {};
factory.getlist = function(){
$http({method: 'GET', url: 'http://localhost:61686/getdatlist?format=json', headers: {'Access-Control-Allow-Origin': 'localhost:*'}}).
success(function(data, status, headers, config) {
console.log(data.itemsToReturn); //I get the correct items, all seems ok here
return data.itemsToReturn;
}).
error(function(data, status, headers, config) {
console.log("fail");
});
}
return factory;
});
Irgendwelche Ideen dazu wird groß sein. PS: Ich habe viele Posts über dieses Problem gefunden, aber keiner von ihnen hat mir geholfen, eine vollständige Lösung zu bekommen.
Dank
Arbeitete wie ein Charme. Danke –
Schön, danke Konstantin. –