2013-04-15 11 views
12

Sono nuovo di angularjs. Sto cercando di scoprire quando utilizzare il valore rispetto a factory as a service. Ecco il mio codice semplice da esercitazione egghead.io:valore angularjs vs factory

.value('Data', function(){ 
    return {message:"I am data from a service"}; 
    }) 

Il Data.message è associato a un campo di immissione. Quando avvio la pagina, non c'è nulla nei campi di input. Se cambio il valore in fabbrica, il messaggio di default appare nel campo di inserimento.

Ecco il controllore:

controller('FirstCtrl', ['$scope','Data',function($scope, Data) { 
    $scope.data = Data; 
    console.log('exiting first controller'); 
    }]) 

e il file di indice:

<div ng-controller="FirstCtrl"> 
    <input type="text" ng-model="data.message"> 
    <h1>{{data.message}}</h1> 
</div> 

Perché la pagina vuota quando si utilizza il valore? La mia ipotesi è che il valore non sia calcolato o calcolato quando l'app inizia mentre la fabbrica è?

Inoltre, dove posso trovare della documentazione su $ fornire? Grazie a tutti.

+3

Un po 'estranei po' questo mi ha aiutato in una situazione simile. fabbrica vs. servizio vs. fornire https://gist.github.com/Mithrandir0x/3639232. Per aumentare le possibilità di ottenere una risposta migliore sarebbe utile se fosse possibile fornire un esempio tramite jsFiddle o un servizio simile. – TheHippo

+0

Grazie per il link utile. –

risposta

19

impostare il valore a un oggetto, piuttosto che una funzione:

app.value('Data', {message:"I am data from a service"}); 

Plunker

Vedi anche provide.value(), e questo video about $provide (valore, costante, di servizio, di fabbrica, decoratore, fornitore)

+0

Grazie mille per il video. Chiarito molto –

-1

È necessario dichiarare il controller come

app.controller('DataController', ['Data', function DataController(Data){ 
     this.data = Data; 
    }]); 

e poi usarlo nella tua pagina, come nel mio codice

<div ng-controller='DataController as dataController'> 
     {{dataController.data()}} 
    </div> 
Problemi correlati