Angular.js资源休息调用错误TypeError:undefined不是函数

时间:2014-09-21 16:39:11

标签: javascript angularjs rest

我想做一个REST调用来更新数据,我已经完成了一个GET请求来填写表单,当我点击更新按钮时,我想发送和PUT调用而不是我得到类型错误。

以下是代码:

// service.js

someservice.factory('update', function($resource) {
return $resource(connectionString + 'update', {}, {
put: {
  method: "PUT",
  isArray:
    'Content- false,
    headers: {Type': 'application/json',
    'cache-control': 'no-cache',
    'Pragma': 'no-cache',
    'sessionId': gv.sessionId
     }
    }
  })
})

// companyCtrl.js我已在控制器依赖项中包含更新工厂

$scope.btnUpdate = function() {
    console.log("asd");
    update.put({}, {
       'data': $scope.data
    }, function(data){
       if(data.success){
          console.log("success");
       }
       else{
          console.log("faliure");
       }
    })
}

在我的视图中,我有按钮,其中ng-click =“btnUpdate()”

console.log记录“asd”所以一切都已连接。

有一件事可能需要解决这个问题,我正在使用ui-router并在我的状态配置中包含控制器,如下所示:

  .state('admin.company', {
  url: "/company/{_id}",
  templateUrl: "./views/partials/company.html",
  controller: "companyCtrl"

错误堆栈如下:

TypeError: undefined is not a function
at Scope.$scope.btnUpdate (http://localhost:3000/dist/js/app.min.js:1:6680)
at http://localhost:3000/libs/angular/angular.js:10836:21

2 个答案:

答案 0 :(得分:0)

问题在于工厂依赖性,我删除了一个依赖项,现在一切正常。

答案 1 :(得分:-1)

那是整个companyCtrl.js吗?您实际上没有定义名为“companyCtrl”的函数或在应用程序中将其注册为控制器。如果您将companyCtrl.js更改为以下内容,则应该修复它。

function companyCtrl($scope) {
$scope.btnUpdate = function() {
    console.log("asd");
    update.put({}, {
       'data': $scope.data
    }, function(data){
       if(data.success){
          console.log("success");
       }
       else{
          console.log("faliure");
       }
    })
}
}