当我要切换到另一个控制器时,如何在控制器中调用函数

时间:2015-05-29 06:52:05

标签: javascript angularjs

我有一个函数可以将页面上所有选定的表单元素保存到角度缓存(我有一个服务)。我想点击导航转到另一个页面(具有不同的控制器)时调用此功能。我该怎么办?

3 个答案:

答案 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 ... }
  }
})