Ich habe einen Winkel App, die den folgenden Code in dem Skript hat:Funktion innerhalb der Fabrik ist nicht erreichbar von benutzerdefinierter Richtlinie
var myApp = angular.module('myApp', []);
myApp.controller('Ctrl', function($scope, FileAccessor) {
$scope.countrynames = []
});
myApp.directive('country', function() {
var directiveDefinitionObject = {
restrict: 'E',
templateUrl: 'partials/scape.html',
controllerAs: 'dm',
compile: function(scope, FileAccessor) {
FileAccessor.fetchCountryDetails('https://restcountries.eu/rest/v1/all').success(function(response) { //assigning the fetched countries to the scope object var
scope.countrynames = response;
});
}
}
return directiveDefinitionObject;
})
myApp.factory("FileAccessor", ['$http', function($http) {
return {
fetchCountryDetails: function(url) {
return $http.get(url);
}
}
}]);
Innerhalb scape.html, der folgenden Code verwendet wird:
<div ng-controller="Ctrl" class="container" style="height:500px" >
<select ng-model="model" ng-options="obj.name for obj in countrynames | orderBy: '-population'" placeholder="Select" autofocus>
<option value="">- Please Choose -</option>
</select>
{{model.name}}
{{model.currencies[0]}}
</div>
Wie wir sehen können, versuche ich auf die Funktion zuzugreifen, die in der Fabrik FileAccessor
von der benutzerdefinierten Richtlinie, country
gestellt wird.
Wenn ich es auf Browser laufen, gibt es diesen Fehler, der auf der Konsole erscheint: angular.min.js: 86 Typeerror: FileAccessor.fetchCountryDetails ist keine Funktion
Kann jemand bitte erklären, was mit falsch entlang ging der feste Code?
P.S. Ich möchte, dass die HTTP-Anfragen nur durch die Fabrik (als Voraussetzung) verarbeitet werden.
Edit 1: Einschließlich der Plunkr Link hier: http://plnkr.co/edit/gXQKBd?p=info
Ich habe das auch versucht. Aber das hat die Daten nicht abgerufen. Ich werde meine Frage mit einem Plunkr in Kürze bearbeiten. Bitte schauen Sie hinein. – user5649133
@CozyAzure hat Recht, checkout die Geige https://jsfiddle.net/ebinmanuval/5hdfz0a1/ –
@EbinManuval, Bitte schauen Sie in diese plunkr http://plnr.co/edit/gXQKBd?p=info – user5649133