2012-07-06 7 views
11

Come posso creare una classe helper/utility che può essere accessibile da più controller?Come creare una classe helper accessibile con il controller su AngularJS

Ad esempio, ho due controller: UpdateItemCtrl e CreateItemCtrl. Questi hanno funzioni comuni all'interno delle quali aumenta la ridondanza e riduce la gestibilità.

Vorrei creare una classe ItemSaveHelper che inserirò i metodi comuni e li chiamerà dal controller attivo.

risposta

19

Si desidera creare un service.

Un servizio è solo un singleton che può essere iniettato in cose diverse per fornire funzionalità modulari/condivise. Ecco un semplice esempio: http://jsfiddle.net/andytjoslin/pHV4k/

function Ctrl1($scope, itemManager) { 
    $scope.addItem = function(text) { 
     itemManager.items.push(text); 
    }; 
} 

function Ctrl2($scope, itemManager) { 
    $scope.items = itemManager.items; 
} 

app.factory('itemManager', function() { 
    return { 
     items: [] 
    }; 
}); 
+0

sì che dovrebbe farlo. Grazie! –

+0

basta aggiornare un link https://docs.angularjs.org/guide/services –