2015-05-29 33 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事件。

相關問題