Abhishek Jain
Abhishek Jain

Reputation: 13

using ngResource factory in controller showing error

hi everyone I am new with angular js I want to get data through getting method using Resource I have to build a resource factory but when I call this factory in controller I got this error Error: Users.myUser is undefined Please anyone can tell what I have done wrong or why I am getting this error here is my code.

var Myapp = angular.module('starter.controllers', ['ngResource'])
    .config(['$resourceProvider', function ($resourceProvider) {
        $resourceProvider.defaults.stripTrailingSlashes = false;
    }]);
    Myapp.factory('Users', function ($resource) {
    return{
        myUser:
          $resource('some url', {}, {
            query: {
              method: 'POST',
              params: {},
               isArray: false
            }
        })
    };
});



Myapp.controller('DashCtrl', function ($scope,Users) {
    Users.myUser.query().$promise.then(function (data) {
        console.log(JSON.stringify(data, null, 4));
    }, function (error) {
        console.log('Error is: ' + JSON.stringify(error, null, 4));
    });
});

Upvotes: 0

Views: 43

Answers (2)

Pankaj Parkar
Pankaj Parkar

Reputation: 136144

You should return $resource object from myUser factory function.

Myapp.factory('Users', function($resource) {
  return {
    myUser: function() {
      return $resource('some url', {}, {
        query: {
          method: 'POST',
          params: {},
          isArray: false
        }
      });
    }
  }
});

Controller

Myapp.controller('DashCtrl', function ($scope,Users) {
    //Call myUser method like below
    Users.myUser().query().$promise.then(function (data) {
        console.log(JSON.stringify(data, null, 4));
    }, function (error) {
        console.log('Error is: ' + JSON.stringify(error, null, 4));
    });
});

Upvotes: 1

Praveen M P
Praveen M P

Reputation: 11614

Update your factory as below

Myapp.factory('Users', function ($resource) {
    function myUser() {
          return  $resource('some url', {}, {
                query: {
                    method: 'POST',
                    params: {},
                    isArray: false
                }
            })
    }
});

Upvotes: 0

Related Questions