javascript - 我如何在 AngularJS 上从 Controller 调用服务上的函数

标签 javascript html angularjs angularjs-service angularjs-controller

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

我的服务,

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

我的 Controller

$scope.loadData = function (input) {
ThemeService.ThemeProvider = 2;
ThemeService.SetVariables();
};

我的想法是,在 Controller 内部,可以在设置“ThemeProvider”后调用函数“SetVariables”,以更改“ThemeArea”,但我无法弄清楚如何从 Controller 调用函数“SetVariables” .

当我尝试时,我收到错误

TypeError: Object doesn't support property or method 'SetVariables'

最佳答案

您没有返回SetVariables,请参阅服务定义底部有一个返回语句,它应该包含您想要访问的所有内容。

return {
    ThemeProvider: ThemeProvider,
    getThemeArea: ThemeArea,
    SetVariables: SetVariables
};

关于javascript - 我如何在 AngularJS 上从 Controller 调用服务上的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46467299/

相关文章:

html - 通过滚动使绝对 div 位于屏幕外

html - 下拉菜单边框未扩展到全宽

javascript - 将 ng-model 设置为与变量相同的名称而不是引用该变量?

html - Django 不与 Angularjs 一起工作

javascript - Angular JS http post不写入文件

javascript - 如何在没有额外换行符的情况下在 TinyMCE 中粘贴纯文本?

javascript - 突出显示行 angularjs 中的过滤元素

asp.net - 如何使用 javascript 启用 linkbutton 服务器控件?

javascript - jQuery .click() - 需要确定鼠标被按下的位置,而不是释放的位置

javascript - 重写下划线交集——理解参数数组