Spotted one issue so far, userfactoryhttp.getData is a function but you are 
using it as an object. Change it to:

   function getUserHttp() {
        return userfactoryhttp.*getData()*.then(function (data, status, 
headers, config) {
            return vm.userhttp = status;
        });
    }

Change

On Monday, May 5, 2014 8:22:24 PM UTC+2, Denis Ipatov wrote:
>
> Hello!
>
> I try to implement a very simple GET function to fetch data from Asp.Net 
> controller, which is:
>
>     public class UserController : ApiController
>     {
>         // GET: api/User
>         public IEnumerable<string> Get()
>         {
>             return new[] { "value1", "value2"  };
>         }
>
>         // GET: api/User/5
>         public string Get(int id)
>         {
>             return "value";
>         }
>     }
>
> On the client I use HotTowel and SideWaffle templates creating two variant 
> of factories.
>
> 1 - resource variant:
> (function () {
>     'use strict';
>
>     var serviceId = 'userfactory';
>
>     angular.module('app').factory(serviceId, ['$resource', userfactory]);
>
>     function userfactory($resource) {
>         // Define the functions and properties to reveal.
>         var service = {
>             getData: getData
>         };
>
>         return service;
>
>         function getData() {
>             return $resource('/api/user/5').query();
>         }
>     }
> })();
>
> 2 - http variant
> (function () {
>     'use strict';
>
>     var serviceId = 'userfactoryhttp';
>
>     angular.module('app').factory(serviceId, ['$http', '$q', 
> userfactoryhttp]);
>
>     function userfactoryhttp($http, $q) {
>         // Define the functions and properties to reveal.
>         var service = {
>             getData: getData
>         };
>
>         return service;
>
>         function getData() {
>             var deferred = $q.defer();
>             
> $http.get('/api/user/').success(deferred.resolve).error(deferred.reject);
>             return deferred.promise;
>         }
>     }
> })();
>
> And finally page controller with both factories injected:
> (function () {
>     'use strict';
>     var controllerId = 'userprofile';
>     angular.module('app').controller(controllerId, ['common', 
> 'userfactoryhttp', 'userfactory', userprofile]);
>
>     function userprofile(common, userfactory, userfactoryhttp) {
>     var getLogFn = common.logger.getLogFn;
>     var log = getLogFn(controllerId);
>
>     var vm = this;
>
>     vm.title = 'UserProfile';
>     vm.user = [];
>
>     activate();
>
>     function activate() {
>         var promises = [getUserHttp(), getUser()];
>         common.activateController(promises, controllerId)
>             .then(function () { log('Activated UserProfile View'); });
>     }
>
>     function getUser() {
>         vm.user = userfactory.getData();
>     }
>
>     function getUserHttp() {
>         return userfactoryhttp.getData.then(function (data, status, 
> headers, config) {
>             return vm.userhttp = status;
>         });
>     }
> }
> })();
>
> Why do I have a error refreshing a page?
> TypeError: Object function getData() { return 
> $resource('/api/user/5').query(); } has no method 'then'
>

-- 
You received this message because you are subscribed to the Google Groups 
"AngularJS" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/angular.
For more options, visit https://groups.google.com/d/optout.

Reply via email to