Mein Code ist nicht sehr einfach, weil ich einige Eigenschaften zwischen den Controllern teilen musste, aber das Problem liegt nicht dort. Ich versuche, einen Ajax-Aufruf hinzuzufügen (um wie all die anderen Sachen zu trainieren) und ich bekomme ein leeres Array in der Auswahl-Option im HTML-Layout, wo es den Inhalt des JSons bekommen soll und das Auswahlmenü als Ergebnis füllen soll .
Hier ist mein javascript:
angular.module('greetings', [])
.service("Addcontent", function($http){
this.name = "Nome";
this.familyName = "Cognome";
me = this;
me.tipi= [];
this.ajaxCall = $http.get("http://localhost:8090/my-site/data.json").success(function(data) {
console.log(data);
me.tipi = data;
console.log(me.tipi);
}).error(function(){
console.log("error");
});
this.selectedOption = this.tipi[0];
})
.controller('GreetingsController', function($http, Addcontent) {
this.name = Addcontent.name;
this.familyName = Addcontent.familyName;
this.tipi = Addcontent.tipi;
this.selectedOption = Addcontent.selectedOption;
}).controller("addContentController", function($scope, $window, $http, Addcontent){
this.name = Addcontent.name;
this.familyName = Addcontent.familyName;
this.tipi = Addcontent.tipi;
this.selectedOption = Addcontent.selectedOption;
this.greet = function greet() {
this.name = $scope.$parent.greeting.name
this.familyName = $scope.$parent.greeting.familyName
this.selectedOption = $scope.$parent.greeting.selectedOption
};
});
Und hier ist mein html:
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" charset="utf-8" src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.5/angular.min.js"></script>
<script type="text/javascript" charset="utf-8" src="greetings.js"></script>
</head>
<body>
<h1>Greetings</h1>
<div ng-app="greetings" ng-controller="GreetingsController as greeting">
<b>Greetings:</b>
<div>
Name: <input type="text" min="0" ng-model="greeting.name" required >
</div>
<div>
FamilyName: <input type="text" ng-model="greeting.familyName" required >
<select
data-ng-options="c for c in greeting.tipi" data-ng-model="greeting.selectedOption">
<!--<option ng-repeat="c in greeting.tipi">{{c}}</option>-->
</select>
</div>
<br/>
<span>
{{greeting.selectedOption}} {{greeting.name}} {{greeting.familyName}}
</span>
<div>
<b>Greeting:</b>
<span ng-controller="addContentController as addcontentCtrl">
{{addcontentCtrl.selectedOption}} {{addcontentCtrl.name}} {{addcontentCtrl.familyName}}
<!--<form ng-submit="greeting.update(greeting.selectedOption)">
<input type="submit" value="Greeting">
</form>-->
<button class="btn" ng-click="addcontentCtrl.greet(addcontentCtrl.selectedOption)">Greet</button>
<br/>
</span>
</div>
</div>
</body>
</html>
die json verwendet werden soll:
[{"Hello":"1"},
{"Good Morning":"2"},
{"Good Afternoon":"3"},
{"Good evening":"4"}]
Jede Idee, warum das Auswahlmenü endet leer (beide aktivierten console.logs geben das richtige Ergebnis, also sollte es definitiv funktionieren?
Sie dienen die Website von dem gleichen Port wie der API-Endpunkt ('http: // localhost: 8090')? –
natürlich, der Ajax-Aufruf trow Fehler, so ist es richtig, soweit ich weiß. – softwareplay
Ich habe überprüft, um sicher zu sein;) – softwareplay