2015-05-29 99 views
0

我有一个将页面上的所有选定表单元素保存到角度缓存(我有一个服务)的函数。我想调用这个函数就像我点击导航到另一个页面(它有一个不同的控制器)。我该怎么做?当我即将切换到另一个控制器时,如何调用控制器中的某个功能

+2

您可以更好地将其保存在服务中。并从他们的访问。在两个控制器中注入服务。 –

+0

@ Explore-X我已经做到了。我只需要能够按时调用函数。函数中的 – brainmassage

回答

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()); 
} 
+0

首先,我该如何确保函数调用我正在离开页面?我希望它是页面中的最后一个动作。 – brainmassage

+0

在新的控制器上更改..新的控制器将会执行。所以一旦你到达新的控制器,它将访问服务中的数据。 –

0

每个状态都有一个onExit,OnEnter回调函数。所以你可以调用你的服务函数onExit。

$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 ... } 
    } 
}) 
+0

我认为他没有使用ui-router ...或者没有提及它。 – chozilla

1

AngularJS发出事件$locationChangeStart位置发生改变之前,你可以听与scope.$on("$locationChangeStart", function (...) { ... })。见the docs。如果它不是位置改变,但只有一个(子)视图改变,你可以用相同的方式听取该范围的事件$destroy事件。

相关问题