首页 > 解决方案 > 如何在angularjs工厂方法中制作常用功能

问题描述

我正在使用 angularjs 工厂方法返回数据,并将该值传递给控制器​​。

请看我下面的工厂代码。

app.factory('commonService', ['$timeout', '$rootScope', '$state', '$window',
        function($timeout, $rootScope, $state, $window) {
        
var renderData1 = function(scope) {
                var convertedTime = scope.firstCard.forEach(function(card) {
                    if (card.Category == 'A') {
                        console.log("A");
                    } else if (card.Category == 'B') {
                        console.log("B");
                    } else if (card.Category == 'C') {
                        console.log("C");
                    } else if (card.Category == 'D') {
                        console.log("D");
                    } else if (card.Category == 'E') {
                        console.log("E");
                    }
                });
                return convertedTime;
            };
            var renderData2 = function(scope) {
                var convertedTime = scope.secondCard.forEach(function(card) {
                    if (card.Category == 'A') {
                        console.log("A");
                    } else if (card.Category == 'B') {
                        console.log("B");
                    } else if (card.Category == 'C') {
                        console.log("C");
                    } else if (card.Category == 'D') {
                        console.log("D");
                    } else if (card.Category == 'E') {
                        console.log("E");
                    }
                });
                return convertedTime;
            }

           
            var renderData3 = function(scope) {
                var convertedTime = scope.thirdCard.forEach(function(card) {
                    if (card.Category == 'A') {
                        console.log("A");
                    } else if (card.Category == 'B') {
                        console.log("B");
                    } else if (card.Category == 'C') {
                        console.log("C");
                    } else if (card.Category == 'D') {
                        console.log("D");
                    } else if (card.Category == 'E') {
                        console.log("E");
                    }
                });
                return convertedTime;
            }

            var renderData4 = function(scope) {
                var convertedTime = scope.fourthCard.forEach(function(card) {
                    if (card.Category == 'A') {
                        console.log("A");
                    } else if (card.Category == 'B') {
                        console.log("B");
                    } else if (card.Category == 'C') {
                        console.log("C");
                    } else if (card.Category == 'D') {
                        console.log("D");
                    } else if (card.Category == 'E') {
                        console.log("E");
                    }
                });
                return convertedTime;
            }

            return {
                renderData1: renderData1,
                renderData2: renderData2,
                renderData3: renderData3,
                renderData4: renderData4

            };
            }]);

而不是这个。我想创建一个函数,我需要在多个控制器中返回它。我怎样才能做到这一点。

                        if (card.Category == 'A') {
                            console.log("A");
                        } else if (card.Category == 'B') {
                            console.log("B");
                        } else if (card.Category == 'C') {
                            console.log("C");
                        } else if (card.Category == 'D') {
                            console.log("D");
                        } else if (card.Category == 'E') {
                            console.log("E");
                        }

对于大多数控制器来说,这种情况很常见。那么这可以在一个地方使用它吗?

标签: javascriptangularjs

解决方案


您可以创建一个服务或工厂,您可以在所有控制器中调用它

像这个例子

app.factory('commmonService', ['$timeout', function($timeout){
    return {
        firstFunction: function(param1){
            console.log(param1)

        },
        secondFunction: function(param1, param2){

        }
    }
}])

app.controller('myController', ['$scope', 'commmonService', function($scope, commmonService){

    $scope.myMethod = function(){
        commmonService.firstFunction('Hello');
    }
}])

推荐阅读