我试图从控制器调用服务上的函数,以更新我网站上的主题,具体取决于我所在网站的提供商部分。
我的服务
MyApp.service('ThemeService', function() {
var ThemeProvider = 1;
var ThemeArea = "NotSet";
this.SetVariables = function() {
switch (ThemeProvider) {
case 1:
default:
ThemeArea = "Themes/Default";
break;
case 2:
ThemeArea = "Themes/Provider2";
break;
}
return ThemeProvider;
};
return {
ThemeProvider: ThemeProvider,
getThemeArea: ThemeArea,
};
});
我的控制器
$scope.loadData = function (input) {
ThemeService.ThemeProvider = 2;
ThemeService.SetVariables();
};
我的想法是在控制器内部,可以在设置“ ThemeProvider”后调用“ SetVariables”函数,以更改“ ThemeArea”,但是我无法弄清楚如何从控制器中调用函数“ SetVariables”。
当我尝试时,出现错误
TypeError:对象不支持属性或方法“ SetVariables”
最佳答案
您没有返回SetVariables
,请在服务定义的底部看到一个return语句,该语句应包含您希望可访问的所有内容。
return {
ThemeProvider: ThemeProvider,
getThemeArea: ThemeArea,
SetVariables: SetVariables
};