我试图从控制器调用服务上的函数,以更新我网站上的主题,具体取决于我所在网站的提供商部分。

我的服务

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
};

09-19 18:08