Аз съм нов за 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"});
Вижте също provide.value (), и този видео за $ provide (стойност, константа, услуга, фабрика, декоратор, доставчик)
-1 за отговор № 2
Трябва да декларирате контролера като
app.controller("DataController", ["Data", function DataController(Data){
this.data = Data;
}]);
и след това да го използвате във вашата страница, както в моя код
<div ng-controller="DataController as dataController">
{{dataController.data()}}
</div>