我有一个函数可以将页面上所有选定的表单元素保存到角度缓存(我有一个服务)。我想点击导航转到另一个页面(具有不同的控制器)时调用此功能。我该怎么办?
答案 0 :(得分:2)
您可以执行以下操作。
var app = angular.module('myApp', []);
app.factory('MySharingService', function() {
var tempData = {};
return {
saveData: function(data) {
tempData = data;
},
getData: function() {
return tempData;
}
};
});
function First($scope, MySharingService) {
console.log('First Controller...........');
console.log(MySharingService.saveData(dataTobeSaved)); //Pass the data here
}
function Second($scope, MySharingService) {
console.log('Second Controller..........');
console.log(MySharingService.getData());
}
答案 1 :(得分:1)
AngularJS在更改位置之前发出事件$locationChangeStart
,您可以使用scope.$on("$locationChangeStart", function (...) { ... })
收听该事件。见the docs。如果它不是位置更改而只是(子)视图更改,您可以以相同的方式收听该范围的$destroy
事件。
答案 2 :(得分:0)
每个州都有一个onExit,OnEnter回调函数。因此,您可以在退出时调用您的服务功能。
$stateProvider.state("contacts", {
template: '<h1>{{title}}</h1>',
resolve: { title: 'My Contacts' },
controller: function($scope, title){
$scope.title = 'My Contacts';
},
onEnter: function(title){
if(title){ ... do something ... }
},
onExit: function(title){
if(title){ ... do something ... }
}
})