【问题标题】:AngularJS method of using multiple services for one controller?AngularJS 为一个控制器使用多个服务的方法?
【发布时间】:2013-12-16 10:50:11
【问题描述】:

我不知道这是否适合提问,但这里是:

我的应用程序包含许多不同的表单,我想使用 angular(和 laravel)提交它们,这就是它的样子:

app.controller("uploadController", ['$scope', '$sanitize', '$location', 'UploadService', 
    ($scope, $sanitize, $location, UploadService) -> 
        $scope.upload = ->
            formType = $sanitize($scope.formType)
            ##switch case for `UploadService` to gain data of what form it is
            ##Ex:
            ###
                switch(formType): {
                    case ('uploadFormNews'):
                        UploadService.save
                            data1: $sanitize($scope.data1)
                            data2: $sanitize($scope.data2)
                        , (->
                            $scope.alert = ''
                        ), (response) ->
                            $scope.alert = response.data.alert
                        break;
                    case ('uploadFormMember'):
                        UploadService.save
                            data3: $sanitize($scope.data3)
                            data4: $sanitize($scope.data4)
                        , (->
                            $scope.alert = ''
                        ), (response) ->
                            $scope.alert = response.data.alert
                        break;
                }
            ###
])

现在我的问题是,如何针对此类不同情况确定不同的服务?我试过这个:

app.factory("UploadService", ['$resource', ($resource) ->
    $resource "upload/news" //for news form
    $resource "upload/member" //for member form
])

显然它不起作用,有些东西不完整(想知道case 将使用什么$resource)。有什么办法吗?感谢您的帮助

【问题讨论】:

    标签: angularjs laravel-4


    【解决方案1】:

    如果我正确理解了这个问题。你的工厂应该返回一个定义了这些资源的对象。

    app.factory("UploadService", ['$resource', function($resource)
    {
    return  {
        news:$resource("upload/news"), //for news form
        member:$resource("upload/member") //for member form
    }
    }]);
    

    我是控制器,然后你调用

    UploadService.news.save(data); //For saving news
    
    UploadService.member.save(data); //For saving member
    

    【讨论】:

    • 是的,您正确理解了这个问题,并且是一个非常好的解决方案,谢谢(可以在 2 分钟内回答)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-17
    • 1970-01-01
    • 2015-05-17
    • 1970-01-01
    • 2020-06-02
    • 2013-10-28
    • 2013-04-09
    相关资源
    最近更新 更多