2017-03-07 6 views
0

私のhome.htmlページにHomeControllerとしてコントローラがあり、私のabout.htmlページで同じコントローラとその内容を呼び出したいとします。以下のコードは、ユーザーの名字と姓を表示するホームページ用で、about usページの名字を呼び出すのと同じ機能を呼び出すとします。どうやってするか?現在のところ、私は全体をコピーし、コントローラの名前をHomeControllerからAboutControllerに変更するだけで、コントローラについて貼り付けました。私たちは1つのコントローラを1つのhtmlページからangularjsの別のhtmlページに呼び出すことができます

(関数(){ 'は厳密使用';

angular 
    .module('app') 
    .controller('HomeController', HomeController); 

HomeController.$inject = ['UserService', '$rootScope','$scope', '$http']; 
    function HomeController(UserService, $rootScope,$scope, $http) { 
    var vm = this; 

    vm.user = null; 
    vm.allUsers = []; 
    vm.deleteUser = deleteUser; 

    initController(); 

    function initController() { 
     loadCurrentUser(); 
     loadAllUsers(); 
    } 

    function loadCurrentUser() { 
     UserService.GetByUsername($rootScope.globals.currentUser.username) 
      .then(function (user) { 
       vm.user = user; 
      }); 
    } 

    function loadAllUsers() { 
     UserService.GetAll() 
      .then(function (users) { 
       vm.allUsers = users; 
      }); 
    } 

    function deleteUser(id) { 
     UserService.Delete(id) 
     .then(function() { 
      loadAllUsers(); 
     }); 
    } 
    $http.get('webservice'). 
     then(function(response) { 
     $scope.user_message = response.data.data; 
    }); 
} 

})();

+0

あなたの質問が正しく理解できれば、これが可能です。あなたの質問を精緻にしてください。コード構造を表示する。 – Sangharsh

+0

コントローラの継承を使用できます。 1つのベースコントローラーに共通の機能を持たせてから、他のコントローラーで、派生コントローラーのスコープでベーススコープを開始して、ビューからベースメソッドにアクセスできるようにします。 –

+0

ルータを使用する各状態で、同じコントローラを使用することができます(呼び出さない)ことができます。 – Faly

答えて

0

2つの異なるページに同じコントローラを使用する場合は、「」と入力することができます。です。

コントローラ間に共通のデータ/メソッドがある場合はservicesを探していますが、コントローラーのインスタンスがそれぞれ作成されることに注意してください。

+0

上記のコードを掲載しています。 – Shivangi