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.