/ / angularjs стойност срещу фабрика - angularjs

стойност на ъгловата стойност спрямо фабричните - ъглови

Аз съм нов за angularjs. Опитвам се да разбера кога да използвам стойността спрямо фабриката като услуга. Тук е моят прост код от egghead.io урок:

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

Data.message е свързано с поле за въвеждане. Когато стартирам страницата, в полетата за въвеждане няма нищо. Ако промените стойността на фабрично, в полето за въвеждане се появява съобщението по подразбиране.

Тук е контолерът:

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

и индексния файл:

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

Защо страницата е празна, когато използвате стойност? Моето предположение е, че стойността не се изчислява или изчислява при стартиране на приложението, докато фабриката е?

Също така, къде мога да намеря някаква документация за $ provide? Благодаря на всички ви.

Отговори:

19 за отговор № 1

Задайте стойността на обект, а не на функция:

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

Plunker

Вижте също provide.value (), и този видео за $ provide (стойност, константа, услуга, фабрика, декоратор, доставчик)


-1 за отговор № 2

Трябва да декларирате контролера като

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

и след това да го използвате във вашата страница, както в моя код

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