2015-10-20 1 views
1

Je développe une application Web en utilisant AngularJS avec uiRouter. J'ai développé ma configuration de la route comme suit:Séparez les parties communes du contrôleur dans un contrôleur commun

(function() { 

    'use strict'; 

    var module = angular.module('app', ['ngMaterial', 'ui.router']); 

    function Config($urlRouterProvider, $stateProvider) { 
     $urlRouterProvider.otherwise('/'); 

     $stateProvider.state('Home', { 
      url: '/', 
      templateUrl: 'Partials/homeview.html', 
      controller: 'homeCtrl' 
     }).state('Table', { 
      url: '/tableview', 
      templateUrl: 'Partials/tableview.html', 
      controller: 'tableCtrl' 
     }).state('List', { 
      url: '/listview', 
      templateUrl: 'Partials/listview.html', 
      controller: 'listCtrl' 
     }).state('New', { 
      url: '/new', 
      templateUrl: 'Partials/new.html', 
      controller: 'newCtrl' 
     }).state('Edit', { 
      url: '/edit/:index', 
      templateUrl: 'Partials/edit.html', 
      controller: 'editCtrl' 
     }); 
    } 
    Config.$inject = ["$urlRouterProvider", "$stateProvider"]; 

    module.config(Config); 
}()); 

La chose dans certains contrôleur est passé à la vue du code est dupliqué, donc je voudrais savoir s'il y a un moyen de passer 2 contrôleurs à la vue en même ou s'il existe un moyen de créer un fichier séparé avec cette partie spécifique du contrôleur dupliqué et de le transmettre en tant qu'injection de dépendances dans les contrôleurs souhaités.

+1

Vous pouvez utiliser des services/usines angulaires –

Répondre

1

Vous ne pouvez pas avoir deux contrôleurs liés à un itinéraire uiRouter. Mais vous pouvez certainement faire un service ou une usine qui inclut votre fonctionnalité universelle. (Voir angular.service vs angular.factory pour plus de recherche.)

var app = angular.module('app',[]) 
app.service('myFunctions',function() { 
    this.addNumbers = function(a,b) { 
    // calculate some stuff 
    return a+b; 
    } 
} 
app.controller('myController',function(myFunctions){ 
    myFunctions.addNumbers(2,2); // 4 
})