2016-04-22 60 views
0

我的Angular.js應用程序中有一個頁面,它執行http請求並填充結果的一些文本框。AngularJS加載關於狀態加載的數據

我瀏覽到該頁面使用:

$state.go('utab.history'); 

,但是當它到達頁面中的所有文本框爲空,我目前使用的離子學離子複習:

<ion-refresher 
    pulling-text="Pull to refresh..." 
    on-refresh="showappraisal()"> 
</ion-refresher> 

調用控制器的功能,然後填充所有的文本框,但現在應用程序接近完成我需要解決這個問題。

我試過在$state.go('utab.history');之前使用$rootScope.$emit("CallParentMethod", {});,它確實運行了這個函數,但是它只是不會填充文本框,直到我做拉刷新(即使它們調用相同的函數)。

有沒有辦法在utab.history加載時獲取事件?

+0

我認爲我們需要一些更多的代碼來解決這個問題。就像你如何精確加載你的數據。 – Walfrat

回答

0

添加監聽功能,在您的視圖控制器,使任何你想要的改變。

app.controller("yourcontroller", ['$scope', '$ionicView', function($scope, $ionicView){ 

    $scope.$on('$ionicView.afterEnter', function(e){ 
     //You can call your functions 
    }); 

}); 

app.controller("yourcontroller", ['$scope', '$ionicView', function($scope, $ionicView){ 

    $scope.init = function(){ 
     $scope.$on('$ionicView.afterEnter', function(e){ 
      //You can call your functions 
     }); 
    } 

$scope.init(); //initialize by your own 

}); 

有這麼多的事件都可以同時從一個視圖到另一個導航。

可用事件:
裝,進入,離開,beforeEnter,beforeLeave,afterEnter,afterLeave,卸載。

爲方便起見,您可以聽取上述任何事件。

Referncehttp://ionicframework.com/docs/api/directive/ionView/

0

我相信你的問題有點含糊。但是,如果我理解正確的話,你可以這樣做:

您可以通過

$state.go('myView', { myKey: myData }); 

數據發送到一個狀態,並從

$stateParams.myKey 

另外訪問數據,沒有得到觸發有任何事件的獲取請求事件,您可以使用$ionicView.beforeEnter事件來了解何時加載頁面(即使在默認情況下在Ionic中存在緩存)

+0

我不想發送數據,當我做$ state.go('utab.history');我希望能夠在該控制器中運行一個功能。目前如果這個狀態已經打開,它什麼也不做,只會讓你進入頁面。 –

+0

好,那麼'$ ionicView。即使存在緩存,每次頁面加載時都會調用beforeEnter。 – Yagiz

+0

這就是我正在尋找的非常感謝 –

-1

您可以致電showappraisal()在控制器的構造函數:

angular.controller('myId', function(){ 

    this.showappraisal = function() { 
    //logic to load data here 
    }; 

    //this will do the call when the controller is created which should happen when the state is started 
    this.showappraisal(); 

}); 
+0

如果頁面被緩存,此解決方案將不起作用。 – Yagiz

+0

你是指HTML頁面還是狀態? – pgreen2

+0

那你爲什麼要定義一個函數?在這種情況下,您可以直接在控制器中編寫代碼。 –

0
$scope.$on('$stateChangeSuccess', function(event, toState, toParams, fromState, fromParams) { 
     if(toState == 'utab.history') 
     { 
      // do your stuff 
     } 
});