2つの異なるルート上の複数のコントローラ間で同じサービスを再利用しようとしています。私は最初のコントローラを使用してサービス中のオブジェクトの名前を設定し、ルートを変更し、何も印刷されない第2のコントローラを使用してサービス内の同じオブジェクトをフェッチしようとします。2つの異なるルートの2つのコントローラが同じサービスを共有できますか?
app.js(file):
angular.module('sampleapp', ["ngRoute"]).
config(['$routeProvider', '$locationProvider', function($routeProvider, $locationProvider) {
$locationProvider.html5Mode(true);
$routeProvider
.when('/',
{
templateUrl: 'src/loginform/loginform.html',
controller: 'LoginFormController'
})
.when('/home',
{
templateUrl: 'src/home/home.html',
controller: 'HomeController'
})
}])
Service Code:
angular.module('sampleapp').service("CommonService", [function() {
const Names = [
{Name: "Mounish", age: 27},
{Name: "Chakradhari", age: 24},
{Name: "Venkat", age: 28}
];
this.data = {
firstName: ''
};
this.printNames = function() {
return Names;
}
this.setName = function(value) {
this.data.firstName = value;
}
this.getName = function() {
return this.data.firstName;
}
}])
Login form (controller 1):
angular.module('sampleapp')
.controller('LoginFormController', ["$scope", "$location", "CommonService", function($scope, $location , CommonService) {
$scope.username = "jamili";
$scope.submitHandler = function(event) {
event.preventDefault();
console.log("Clicked");
window.location.href = '/home';
};
CommonService.setName("Mounish");
CommonService.getName();
}])
Home Page (Controller 2):
angular.module('sampleapp')
.controller('HomeController', ['$scope', "CommonService", function($scope, CommonService) {
$scope.names = CommonService.printNames();
console.log($scope.names);
console.log(CommonService.getName());
}])
同じサービスを2つの異なるルート上の複数のコントローラ間で再利用しようとしています。私は最初のコントローラを使用してサービス中のオブジェクトの名前を設定し、ルートを変更し、何も印刷されない第2のコントローラを使用してサービス内の同じオブジェクトをフェッチしようとします。
エラーがあります –
あなたの価値をどこかに保管していないので、何も印刷されないことがあります。あるコントローラーから別のコントローラーに値を渡す場合、その場で行うことはできません。値を保存するか、ルートにパラメーターとして渡します。 – Lotus91