从工厂调用函数 Angularjs

Calling a function from a factory Angularjs

还比较新。我正在尝试能够从工厂获取和设置值,但我似乎无法获取 运行 的函数。它称为类型错误。我也不能在不杀死它的情况下将 $scope 添加到工厂。帮忙?

app.factory('globals', function() {
    var globalTag = {};
        globalTag.currDrive = "";
        globalTag.myFaults = "";
    var availDrives = "";

    globalTag.currDrive = "this sucks";
    globalTag.myFaults = "I've got a lovely bunch of faulty faults";

    function setDrive(driveID) {
        globalTag.currDrive = driveID;
    };

    return globalTag;
});

app.controller('FaultController', ['$scope', '$routeParams', 'globals', function($scope, $routeParams, globals) {
    //Setup dummy paramenters
    $scope.driveInfo = {};
    $scope.driveInfo = globals.setDrive("350");
}]);

您永远不会从服务中公开 setDrive 方法。正确的代码是:

app.factory('globals', function () {
    var globalTag = {};
    globalTag.currDrive = "";
    globalTag.myFaults = "";
    var availDrives = "";

    globalTag.currDrive = "this sucks";
    globalTag.myFaults = "I've got a lovely bunch of faulty faults";

    function setDrive(driveID) {
        globalTag.currDrive = driveID;
    };

    globalTag.setDrive = setDrive; // <--- make it part of globals service API

    return globalTag;
});