Ich möchte eine Fabrik für Routing-Zwecke erstellen. Ich möchte das in einer Fabrik einkapseln, weil ich Informationen von einer Seite zur anderen austauschen möchte. Ich weiß nicht, ob dies die beste Vorgehensweise ist. Bitte sagen Sie mir, ob es andere bessere Möglichkeiten gibt.AngularJS Routing innerhalb einer Fabrik
Das ist mein Controller ist:
angular.module('app.core')
.controller('mainCtrl', ['ShowService', 'ChangeViews', function(ShowService, ChangeViews){
var vm = this;
vm.namespaces = [];
vm.servers = [];
vm.p4path = '';
vm.gitpckname = '';
vm.server = '';
vm.ns = '';
ShowService.getNamespaces().then(function(response){
var data = angular.fromJson(response.data);
angular.forEach(data.namespaces, function(value){
vm.namespaces.push(value);
vm.initNamespaceSelVal = vm.namespaces[0];
vm.ns = vm.namespaces[0];
});
});
ShowService.getServers().then(function(response){
var data = angular.fromJson(response.data);
angular.forEach(data.servers, function(value){
vm.servers.push(value);
vm.initServerSelVal = vm.servers[0];
vm.server = vm.servers[0];
});
});
vm.doClick = function(value){
if(value){
var body = {};
body['server'] = vm.server;
body['p4path'] = vm.p4path;
body['packagename'] = vm.gitpckname;
body['namespace'] = vm.ns;
ShowService.getBraches(body).then(function(response){
console.log(response);
//$location.path('/hidden');
//ChangeViews.changeView('/hidden');
});
};
};
}]);
In dem obigen Code injiziert ich zwei Maß Fabriken in den Controller. Der "ShowService" funktioniert ordnungsgemäß, aber die "ChangeViews" gibt einige Fehler zurück.
Die Verwendung von $ location service im Controller (die kommentierte Zeile) funktioniert.
Der Werkscode ist:
angular
.module('app.services')
.constant('BASE_URL', 'http://localhost:8066')
.factory('ShowService', dataService)
.factory('ChangeViews', changeViews);
function dataService($http, BASE_URL){.....}
function changeViews($location, view){
var data = {
'changeView': changeView,
};
function changeView(view){
return $location.path(view);
};
return data;
}
Der Pfad zur HTML-Vorlage geleitet wird. Der Fehler, den ich empfangen werde, wenn die ChangeViews Fabrik Injektion ist:
"Error: [$injector:unpr] http://errors.angularjs.org/1.5.5/$injector/unpr?p0=viewProvider%20%3C-%20view%20%3C-%20ChangeViews
Was fehlt mir?
Danke
dies in der Regel passiert, wenn Sie stellen keine Verbindung zwischen Ihrem js-Datei, die die ChangeViews Werk enthält. Verknüpfen Sie diese Datei mit Ihrer index.html-Datei nach dem eckigen Link –
Wo definieren Sie den 'view' Service? Ich denke nirgends - daher der Fehler. – dfsq
@WildWidow sie sind verknüpft. Wie Sie im Factory-Code sehen, befindet sich der ShowService in derselben Datei (ich habe den vollständigen Code nicht eingefügt). Im Controller kann ich die ShowServices ohne Probleme verwenden. – florin