Mean Stack——Angular将参数从控制器传递到$resource对象
Mean Stack - Angular passing parameters from controller to $resource object
我已经发布了几次认为我的问题是在传递参数到Express服务器。我已经证明了问题在Angular这一边。当我在flConstruct.js函数中硬编码id时,查询按预期工作。看起来id没有从flCachedConstructs函数传递给flConstruct中的"get"。正如您所看到的,我使用控制台日志在许多位置打印出id,并打印出正确的id。由于某些原因,参数没有与flConstruct中的get相关联。也许我的空格或语法不对。如果您能提供任何见解,我们将不胜感激。
// flConstructDetailCtrl.js
angular.module('app').controller('flConstructDetailCtrl', function($scope, flCachedConstructs, $stateParams, $state, flConstructDataService, flQuestionQueryParameterService){
console.log('Just inside the flConstructDetailCtr');
console.log('flConstructDetailCtr - before promise - $stateParams.id ' + $stateParams.id);
flCachedConstructs.queryID($stateParams.id)
.then(function(data) {
// work with data here
console.log("flConstructDetailCtr - Get Success " + data);
console.log("flConstructDetailCtr - Get Success Question description " + data.description);
console.log("flConstructDetailCtr - Get Success Question id " + data._id);
flConstructDataService.setInitialized(true);
flConstructDataService.setNewConstructId(data._id);
flConstructDataService.setNewTitle(data.title);
flConstructDataService.setNewDescription(data.description);
$state.go("constructUpdate");
});
//flCachedConstructs.js
angular.module('app').factory('flCachedConstructs', function(flConstruct,$http, $q, $state, $timeout) {
var constructList = null; // temporarily set to null for testing purposes
return {
queryID: function(id) {
console.log("flCachedConstruct - queryID function by ID - start");
console.log("flCachedConstruct - queryID function by ID - parameter = constructId " + id);
var deferred = $q.defer();
flConstruct.get(id, function(data) {
if (data) {
deferred.resolve(data);
console.log("flCachedConstruct - queryID function by ID - resolved Data = " + data);
console.log("flCachedConstruct - queryID function by ID - resolved Data data.description " + data.description);
console.log("flCachedConstruct - queryID function by ID - resolved Data data._id " + data._id);
}
else {
deferred.reject("Error getting Construct");
console.log("flCachedConstruct - queryID function by ID - rejected Data");
}
});
console.log("flCachedConstruct - queryID function by ID - return Promise data");
return deferred.promise;
},
}
})
//flConstruct.js
angular.module('app').factory('flConstruct',function($resource){
var ConstructResource = $resource('/api/constructs/:id', {id: '@id'}, {
get: { method: 'GET', url: '/api/constructs/byId', params: {id: '@id'}},
//get: { method: 'GET', url: '/api/constructs/byId', params: {id: '570ab7c086ccc2d81ac18fa6'}}, (By hard coding the query worked as expected)
query: { method: 'GET' , url: '/api/constructs', isArray: true },
create: { method: 'POST'},
update: { method: 'PUT' },
delete: { method: 'DELETE', params: {id: '@id'}}
});
return ConstructResource;
});
我发现我错了。在flCachedConstruct.js中对get的调用没有正确定义要传递的参数。我需要包括参数名"id"以及参数值"constructID"。这个函数调用中的"id"与我在flConstruct.js中调用的参数相匹配。
flConstruct。get({id: constructId}, function(data) {
相关文章:
- angularjs $resource将查询资源列表转换为对象数组
- 从使用 $resource 的服务返回新对象
- AngularJS$resource正在将整个对象编码到URL中
- AngularJS$resource-更新对象中的数组
- 如何向$resource对象添加数据操作
- 如何在angularjs中的$resource对象中使用@id
- Angular的ngResource $save方法清除$resource对象
- 从AngularJS的$resource对象中获取属性值
- vue-resource返回一个promise对象
- 对象不支持属性或方法'setSrc'web Resource in CRM 2011
- 如何解析angularJS中的$resource对象
- 理解AngularJS $resource()返回什么(类或实例对象)
- 扩展$resource对象从工厂中移除原型
- AngularJS, $resource,从.query()中获取对象
- 如何传递多个对象到$resource.保存在angularjs中
- 从$resource中提取JSON对象.得到的承诺
- Mean Stack——Angular将参数从控制器传递到$resource对象
- 将多个对象传递给angularjs$resource.save()
- 访问JSON对象以获取Resource Bundle键/值对
- 角度工厂$resource在数据库中创建一个空对象