服务中的多个功能不允许创建模块
Multiple functions in service not allowing for module creation
我有一个 CRUD 模块 activities
而不是默认的 articles
但模块的结构是相同的。
当我 select 转到我创建新 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();
}
所以当服务处于默认布局时,转到创建页面就可以正常工作。
但是,像我一样向服务添加另一个功能会破坏它。当我 select 转到创建页面时,没有任何错误,也没有任何迹象表明为什么什么都没发生。
据我所知,activityResolve
的计算结果应该相同,但我不明白为什么它不起作用。
基于已接受的答案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
上没有括号)
我有一个 CRUD 模块 activities
而不是默认的 articles
但模块的结构是相同的。
当我 select 转到我创建新 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();
}
所以当服务处于默认布局时,转到创建页面就可以正常工作。
但是,像我一样向服务添加另一个功能会破坏它。当我 select 转到创建页面时,没有任何错误,也没有任何迹象表明为什么什么都没发生。
据我所知,activityResolve
的计算结果应该相同,但我不明白为什么它不起作用。
基于已接受的答案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
上没有括号)