2016-04-04 84 views
0

如果我回到主頁選項卡,每次如何獲得新的http響應?如何在輸入AngularJS的每個頁面上調用http請求?

我嘗試了幾件事。我讀了「$ state.reload()」,但我不知道在哪裏使用它。 ng-click在tabs.html中不起作用。

控制器:

.controller('HomeCtrl', function ($scope, $http) { 
     'use strict'; 

// how to call this every time on coming back to this tab? 
     $http.get("api.php") 
      .then(function successCallback(response) { 
       $scope.plan = response.data; 
      }, function errorCallback(response) { 
       console.error("Failed HTTP get: " + response.status + " " + response.data); 
      }); 
// ... 

tabs.html

<ion-tabs> 
    <ion-tab title="Home" href="#/tab/home"> 
    <ion-nav-view name="tab-home"></ion-nav-view> 
    </ion-tab> 
<!-- ... --> 
</ion-tabs> 

的index.html:

<ion-nav-view></ion-nav-view> 

模塊:

.config(function ($stateProvider, $urlRouterProvider) { 
    $stateProvider 

     .state('tab', { 
      url: '/tab', 
      abstract: true, 
      templateUrl: 'templates/tabs.html' 
     }) 

     .state('tab.home', { 
      url: '/home', 
      views: { 
       'tab-home': { 
        templateUrl: 'templates/tab-home.html', 
        controller: 'HomeCtrl' 
       } 
      } 
     }) 

非常感謝!

+0

查看'angular.run',並在那裏訂閱'stateChangeStart',在那裏發出請求。 –

回答

0

在控制器

$scope.loadHttp = function(){ 
     $http.get("api.php") 
      .then(function successCallback(response) { 
       $scope.plan = response.data; 
      }, function errorCallback(response) { 
       console.error("Failed HTTP get: " + response.status + " " + response.data); 
      }); 

}; 

鑑於例如

<div ng-click ="loadHttp()">Tab</div> 
+0

ng-click在tabs.html-中不起作用。 – user3646958

+0

,因爲您沒有爲選項卡狀態指定控制器。 – praHoc

+0

.STATE( '標籤',{ URL: '/標籤', 抽象:真, 控制器: '標籤ctrl', templateUrl: '模板/ tabs.html' }) – user3646958

0

用戶上選擇。

<ion-tab 
    title="Home" 
    icon="my-icon" 
    href="#/tab/home" 
    on-select="onTabSelected()" 
    on-deselect="onTabDeselected()"> 
</ion-tab> 

這裏是Demo

+0

是否必須刪除tabs.html並在index.html中寫入任何內容? – user3646958

0

似乎現在的工作。感謝@praHoc。

我添加了「緩存」三次,沒有別的。

 .state('tab', { 
      url: '/tab', 
      abstract: true, 
      cache: false, 
      templateUrl: 'templates/tabs.html' 
     }) 

     // Each tab has its own nav history stack: 

     .state('tab.home', { 
      url: '/home', 
      cache: false, 
      views: { 
       'tab-home': { 
        cache: false, 
        templateUrl: 'templates/tab-home.html', 
        controller: 'HomeCtrl', 
       } 
      } 
     })