Я написал простой угловой код JS, который приветствует пользователя в зависимости от времени суток. Он работает нормально. Код приведен ниже:Угловая область объекта JS
var modSvc = angular.module("appName",[]);
modSvc.provider("date",function(){
var greeting;
return {
showGreeting:function(value){
greeting = value;
},
$get:function(){
//it has to return an object which can have variables and functions
return {
showDate:function(){
var date = new Date();
return date.getHours();
},
showGreetingMessage:function(){
//var date = new Date();
return greeting + ", It's "+ this.showDate();
}
}
}
};
});
modSvc.config(function(dateProvider){
var hours = dateProvider.$get().showDate();
if(hours<12)
dateProvider.showGreeting("Good morning!");
else if(hours<17)
dateProvider.showGreeting("Good afternoon!");
else if(hours<22)
dateProvider.showGreeting("Good evening!");
else
dateProvider.showGreeting("Good night!");
});
function serviceController($scope,date){
$scope.greetingMessage = date.showGreetingMessage();
}
modSvc.controller("svcController",serviceController);
Если вы видите showGreetingMessage
функция имеет только одну строку кода, которая:
return greeting + ", It's "+ this.showDate();
Однако showDate
функция находится на том же уровне, что и showGreetingMessage
функции. Вот почему this.showDate
не должен работать, и он должен давать ошибку. Но он работает отлично. Как это так?