【问题标题】:Multiple functions in service not allowing for module creation服务中的多个功能不允许创建模块
【发布时间】:2017-01-24 21:44:43
【问题描述】:

我有一个 CRUD 模块 activities,而不是默认的 articles,但模块的结构是相同的。

当我选择转到创建新activity 的页面时,将调用activities.create 状态(如articles 之一)

.state('activities.create', {
    url: '/create',
    templateUrl: 'modules/activities/client/views/form-activity.client.view.html',
    controller: 'ActivitiesController',
    controllerAs: 'vm',
    resolve: {
        activityResolve: newActivity
    },
    data: {
        roles: ['user', 'admin'],
        pageTitle: 'Activities Create'
    }
})

function newActivity(ActivitiesService) {
    return new ActivitiesService().getActivitiesOfAllUsers();
}

而我的ActivitiesService 看起来像这样:

function ActivitiesService($resource, Authentication) {
    return {
        getActivitiesOfCurrentUser: function() {
            return $resource('api/:userId/activities/:activityId', {
                userId: Authentication.user._id,
                activityId: '@_id'
            }, {
                update: {
                    method: 'PUT'
                }
            });
        },
        getActivitiesOfAllUsers: function() {
            return $resource('api/activities/:activityId', {
                activityId: '@_id'
            }, {
                update: {
                    method: 'PUT'
                }
            });
        }
    }
}

ActivitiesService 的默认设置是:

function ActivitiesService($resource, Authentication) {
    return $resource('api/:userId/activities/:activityId', {
        userId: Authentication.user._id,
        activityId: '@_id'
    }, {
        update: {
            method: 'PUT'
        }
    });
}

newActivity 函数看起来像这样:

function newActivity(ActivitiesService) {
    return new ActivitiesService();
}

所以当服务处于默认布局时,转到创建页面就可以了。

但是,像我所做的那样向服务添加另一个功能会破坏它。当我选择转到创建页面时,没有任何错误,也没有任何迹象表明为什么什么都没有发生。

据我所见,activityResolve 的评估结果应该相同,但我无法弄清楚它为什么不起作用。

【问题讨论】:

    标签: angularjs meanjs


    【解决方案1】:

    根据接受的答案here,我找到了答案。我将ActivitiesService 修改为:

    function ActivitiesService($resource, Authentication) {
        return {
            getActivitiesOfCurrentUser: $resource('api/:userId/activities/:activityId', {
                    userId: Authentication.user._id,
                    activityId: '@_id'
                }, {
                    update: {
                        method: 'PUT'
                    }
                }),
            getActivitiesOfAllUsers: $resource('api/activities/:activityId', {
                    activityId: '@_id'
                }, {
                    update: {
                        method: 'PUT'
                    }
                })
        };
    }
    

    并将newActivity 函数更改为:

    function newActivity(ActivitiesService) {
        return new ActivitiesService.getActivitiesOfAllUsers;
    }
    

    (所以ActivitiesService 上没有括号)

    【讨论】:

      猜你喜欢
      • 2012-12-19
      • 1970-01-01
      • 2022-01-05
      • 2019-01-22
      • 2012-09-17
      • 1970-01-01
      • 1970-01-01
      • 2023-03-31
      • 1970-01-01
      相关资源
      最近更新 更多