Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AngularJS应用程序在$resource query()中使用参数崩溃_Angularjs - Fatal编程技术网

AngularJS应用程序在$resource query()中使用参数崩溃

AngularJS应用程序在$resource query()中使用参数崩溃,angularjs,Angularjs,我创建了一个简单的工厂,返回$resource: app.factory('OusService', function ($resource,BASE_API) { var res; res = $resource(BASE_API+'/ou/:ouId',null,{ update: { method: 'PUT' // this method issues a PUT request } }); return res

我创建了一个简单的工厂,返回$resource:

app.factory('OusService', function ($resource,BASE_API) {
    var res;
    res = $resource(BASE_API+'/ou/:ouId',null,{
       update: {
          method: 'PUT' // this method issues a PUT request
       }
   });
   return res;
});
然后我在名为“navCtrl”的控制器中使用$resource:

app.controller('navCtrl', ["$scope","$localStorage","OusService", function ($scope,$localStorage,OusService) {

   var navOrg = $localStorage.navOrg;
   OusService.query({ouId: navOrg.ou_id}).$promise.then(function(data){
         console.log(data); 
   }, function(error) {
      console.log(error);
   });
}]);
这段代码完全崩溃了,但是如果我删除“{ouId:navOrg.ou_id}”,代码将被执行,但查询不包含所需的参数。我试着没有承诺,没有回访,没有回访,也没有承诺。代码总是带着参数崩溃

我还尝试在工厂中定义默认参数

错误:

TypeError: V is not a function
at http://10.0.0.145:8003/layout1/assets/js/app.min.js:34:14237
at forEach (http://10.0.0.145:8003/layout1/assets/js/app.min.js:10:14316)
at C.setUrlParams (http://10.0.0.145:8003/layout1/assets/js/app.min.js:34:14122)
at Function.l.(anonymous function) [as query] (http://10.0.0.145:8003/layout1/assets/js/app.min.js:34:12722)
at new <anonymous> (http://10.0.0.145:8003/layout1/assets/js/controllers/navCtrl.js:13:16)
at Object.invoke (http://10.0.0.145:8003/layout1/assets/js/app.min.js:11:16221)
at extend.instance (http://10.0.0.145:8003/layout1/assets/js/app.min.js:13:8182)
at nodeLinkFn (http://10.0.0.145:8003/layout1/assets/js/app.min.js:12:11139)
at compositeLinkFn (http://10.0.0.145:8003/layout1/assets/js/app.min.js:12:2680)
at http://10.0.0.145:8003/layout1/assets/js/app.min.js:12:1389 <nav data-ng-include=" 'assets/views/partials/nav.html' " class="ng-scope" data-ng-animate="1">
TypeError:V不是函数
在http://10.0.0.145:8003/layout1/assets/js/app.min.js:34:14237
在弗雷赫(http://10.0.0.145:8003/layout1/assets/js/app.min.js:10:14316)
在C.seturlparms处(http://10.0.0.145:8003/layout1/assets/js/app.min.js:34:14122)
at Function.l.(匿名函数)[作为查询](http://10.0.0.145:8003/layout1/assets/js/app.min.js:34:12722)
在纽约(http://10.0.0.145:8003/layout1/assets/js/controllers/navCtrl.js:13:16)
在Object.invoke(http://10.0.0.145:8003/layout1/assets/js/app.min.js:11:16221)
例如(http://10.0.0.145:8003/layout1/assets/js/app.min.js:13:8182)
在诺德琳(http://10.0.0.145:8003/layout1/assets/js/app.min.js:12:11139)
在KFN(http://10.0.0.145:8003/layout1/assets/js/app.min.js:12:2680)
在http://10.0.0.145:8003/layout1/assets/js/app.min.js:12:1389 
编辑:

我将angularjs从1.5.7更新到1.5.11,问题已经解决


谢谢你这样使用。。你有没有试过这样的方法:

app.factory('OusService', function ($resource,BASE_API) {
    var res;
    res = $resource(BASE_API+'/ou/:ouId',{'@ouId':ouId},{
       query: {
          method: 'GET',isArray:true // or false if return an object
       }
   });
   return res;
});
然后你想怎么用就怎么用

app.controller('navCtrl', ["$scope","$localStorage","OusService", function ($scope,$localStorage,OusService) {

   var navOrg = $localStorage.navOrg;
   OusService.query({ouId: navOrg.ou_id}).$promise.then(function(data){
         console.log(data); 
   }, function(error) {
      console.log(error);
   });
}]);

像这样使用。。你有没有试过这样的方法:

app.factory('OusService', function ($resource,BASE_API) {
    var res;
    res = $resource(BASE_API+'/ou/:ouId',{'@ouId':ouId},{
       query: {
          method: 'GET',isArray:true // or false if return an object
       }
   });
   return res;
});
然后你想怎么用就怎么用

app.controller('navCtrl', ["$scope","$localStorage","OusService", function ($scope,$localStorage,OusService) {

   var navOrg = $localStorage.navOrg;
   OusService.query({ouId: navOrg.ou_id}).$promise.then(function(data){
         console.log(data); 
   }, function(error) {
      console.log(error);
   });
}]);

我不相信
$resource
query
方法接受参数。相反,它返回一个结果数组。如果您想在中传递
id
,我建议使用
get

OusService.get({ouId: navOrg.ou_id}).$promise.then(function(data){
  console.log(data); 
}, function(error) {
  console.log(error);
});
此外,请尝试将资源更新为以下内容:

app.factory('OusService', ['$resource', 'BASE_API',
  function($resource, BASE_API) {
    var res;
    res = $resource(BASE_API + '/ou/:ouId', {ouId: @ouId}, {
      update: {
        method: 'PUT'
      }
    });
    return res;
  }
]);

需要注意的关键变化是:
{ouId:@ouId}
以及
['$resource',BASE\u API',

我不相信
$resource
query
方法接受参数。相反,它返回一个结果数组。如果您想在中传递
id
,我建议使用
get

OusService.get({ouId: navOrg.ou_id}).$promise.then(function(data){
  console.log(data); 
}, function(error) {
  console.log(error);
});
此外,请尝试将资源更新为以下内容:

app.factory('OusService', ['$resource', 'BASE_API',
  function($resource, BASE_API) {
    var res;
    res = $resource(BASE_API + '/ou/:ouId', {ouId: @ouId}, {
      update: {
        method: 'PUT'
      }
    });
    return res;
  }
]);

需要注意的关键变化是:
{ouId:@ouId}
以及
['$resource','BASE_API',

感谢您的回复,但不幸的是它抛出了相同的错误。我只是不明白。我只是用“无效参数”进行了测试,比如.query({test:'testing'})它不会崩溃,但不会向API发送任何参数。如果我尝试发送“ouId”,则会崩溃。感谢您的回复,但不幸的是,它会抛出相同的错误。我只是不明白。我只是使用“无效参数”进行测试,如.query({test:'testing'})它不会崩溃,但不会向API发送任何参数。如果我尝试发送“ouId”,它会崩溃@SRUEL,更新了我的答案。我想这可能会解决问题。现在我对uglify的咕噜任务正在崩溃:意外字符“@”。我将尝试删除该任务。@SRUEL,这很可能与依赖注入有关。我再次更新了答案,希望能够防止该问题。不起作用。可能其他地方出了问题…谢谢你,我知道了我会继续排除故障。从angularJS 1.5.7升级到1.5.11,问题已经解决。@SRUEL,更新了我的答案。我想这可能会解决问题。现在我对uglify的grunt任务崩溃:意外字符“@”。我将尝试删除该任务。@SRUEL,这很可能与依赖注入有关。我再次将答案更新为,h操作上,防止出现该问题。不起作用。其他地方可能有问题…谢谢,我将继续进行故障排除。从angularJS 1.5.7升级到1.5.11,问题已经解决。