angularjs - Angularjs 无法通过 $routeParams 来创建 $resource 的操作
问题描述
employee.service.js
angular.
module('core.employee').
factory('Employee', ['$resource',
function($resource) {
return $resource('http://127.0.0.1:8007/api/business/:businessId/employees/:employeeId', {}, {
query: {
method: 'GET',
params: {businessId: '', employeeId: ''},
isArray: true
},
create: {
method: 'POST',
params: {businessId: '', employeeId:''}
},
});
}
]);
在我的控制器内部:
self.employees = Employee.query({businessId: $routeParams.businessId}, function(employees) {
});
self.create = function(){
Employee.create({
businessId: $routeParams.businessId,
email: self.email,
access: self.access.value
}).$promise.then(function(employee) {
self.errorMsg = "";
self.employee = employee;
}, function(errResponse) {
console.log($routeParams.businessId);
self.errorMsg = errResponse["data"];
});
}
当前网址:http://127.0.0.1:8007/businesses/1/employees/create
我能够为query
员工。但无法create
。抛出的错误是:
angular.js:13018 POST http://127.0.0.1:8007/api/business//employees/ 404(未找到)
发布数据的实际 url 应该是:http://127.0.0.1:8007/api/business/1/employees/
这里businessId
似乎没有传递给资源。但是在处理错误消息的函数内部:console.log($routeParams.businessId)
给出1
.
里面的路线config
:
when('/businesses/:businessId/employees/create', {
template: '<employee-create></employee-create>'
}).
解决方案
您尚未正确连接$resource
您的请求参数以将请求参数映射到请求路径。
$resource(
'http://127.0.0.1:8007/api/business/:businessId/employees/:employeeId',
// Set up default parameters to extract values from the corresponding
// properties when the resource is used
{ businessId: '@businessId', employeeId: '@employeeId' },
{
query: {
method: 'GET',
isArray: true
},
create: {
method: 'POST',
},
});
未能映射参数会导致生成的请求路径缺少片段。
如果参数值以 为前缀
@
,则该参数的值将从数据对象的相应属性中提取(在使用请求正文调用操作时提供)。
推荐阅读
- android - LiveData 不会触发从 Fragment 观察它
- excel - 试图在 excel (xml) 中设置页眉和页脚
- java - 如何使用 wsdl 文件中的 jaxb 生成 java 类?
- python - python 触发安装路径未知的外部可执行文件
- escaping - 如何发送多个反引号
- mysql - 无法将 UTC_TIMESTAMP 与 AS 一起使用
- linux - 创建新日志名称时使用增量编号更改名称日志名称
- angular - How to handle multiple date format in Bsdatepicker
- groovy - 具有重复键的嵌套 JSON
- heroku - Heroku | Change app to a worker app rather than web