You can just treat $http.get() as a promise. You don't have to directly
instantiate a second promise unless you're doing something funky.

return $http.get().then(function(data){return
massageData(data)}).catch(function(err){at least you have some error
handling})

Also, if you're getting an error, what's the failed? At the very least, I'm
99.9% sure that http://localhost:/localfile.txt is an incorrect url. Don't
you have to put a port after a : in a host definition? so either
localhost/localfile or localhost:3000/localfile. So it could be that your
$http.get is just failing. You can get more information on this in the
chrome debug tools - look at your network requests, and it should show the
localfile.txt XHR, and either be black (success!) or red (fails!) and have
more information there.

e


On Fri, Sep 5, 2014 at 10:54 AM, mark goldin <[email protected]> wrote:

> Actually I am rather getting alert that says Error.
>
>
> On Friday, September 5, 2014 12:52:33 PM UTC-5, mark goldin wrote:
>>
>> Ok, I have changed my code. Here it is:
>>
>> Service
>> angular.module('myModule').factory("service", function ($http, $q) {
>>
>>     var requestUri = 'http://localhost:/localfile.txt';
>>     return {
>>         getData : function(){
>>             var deferred = $q.defer();
>>             var response = $http.get(requestUri);
>>             response.success(function (data) {
>>                 deferred.resolve(data);
>>             });
>>             response.error(function (data) {
>>                 alert('Error');
>>             });
>>             // Return the promise to the controller
>>             return deferred.promise;
>>         }
>>     }
>> });
>>
>> Controller:
>> var promise = service.getData();
>>     $scope.data = promise.then(function (data) {
>>         alert('Success: ' + data);
>>     }, function (reason) {
>>         alert('Failed: ' + reason);
>>     }
>>     );
>> When I run it I get the alert that says Failed ...
>>
>> BTW, if I change my service to this:
>> getData : function(){
>>             var deferred = $q.defer();
>>             deferred.resolve('1234');
>>             return deferred.promise;
>>         }
>> Then I get Success
>>
>> On Friday, September 5, 2014 11:32:42 AM UTC-5, Thomas Murphy wrote:
>>>
>>> Great, so let's focus on what's happening in the controller. As Sander
>>> said, you're returning a promise from you service. *That promise needs
>>> to be resolved. *Check out the documentation here on the syntax, and
>>> see if it doesn't provide you the data you're expecting. https://docs.
>>> angularjs.org/api/ng/service/$q
>>>
>>> Feel free to paste in a bit more of your controller code too.
>>>
>>>
>>> On Fri, Sep 5, 2014 at 12:28 PM, mark goldin <[email protected]> wrote:
>>>
>>>> 1. serviceName.getData();
>>>> 2. The url points to a text file on the local web server. Navigating
>>>> from Browser to the file opens it with no problem.
>>>>
>>>> On Friday, September 5, 2014 9:58:27 AM UTC-5, Thomas Murphy wrote:
>>>>>
>>>>> 1. What are you doing in the controller once you call
>>>>> serviceName.getData()?
>>>>> 2. What url are you calling in $http.get? If you're not calling
>>>>> anything, you'll get no data.
>>>>>
>>>>> Best,
>>>>> Thomas
>>>>>
>>>>>
>>>>> On Fri, Sep 5, 2014 at 10:49 AM, mark goldin <[email protected]>
>>>>> wrote:
>>>>>
>>>>>> I also found this code:
>>>>>>  function ($http, $q) {
>>>>>>   return {
>>>>>>         getData : function(){
>>>>>>             var deferred = $q.defer();
>>>>>>             var promise = $http.get(url).success(function (response)
>>>>>> {
>>>>>>                 deferred.resolve(response);
>>>>>>             });
>>>>>>             // Return the promise to the controller
>>>>>>             return deferred.promise;
>>>>>>         }
>>>>>>     }
>>>>>>
>>>>>> and in controller to get data: serviceName.getData();
>>>>>>
>>>>>> but I get no data. Can you please explain why is not working?
>>>>>>
>>>>>> Thanks
>>>>>>
>>>>>>
>>>>>> On Friday, September 5, 2014 9:39:49 AM UTC-5, mark goldin wrote:
>>>>>>>
>>>>>>> Ok, I see how it works.
>>>>>>> Another question. Is it possible to have just one function 
>>>>>>> *MyTestService
>>>>>>> *and run it like this?
>>>>>>> <div ng-controller='*MyTestService *as vm'>
>>>>>>>        <p>the result from the service load:</p>
>>>>>>>        <pre>{{vm.data|json}}</pre>
>>>>>>>     </div>
>>>>>>>
>>>>>>> On Friday, September 5, 2014 9:28:42 AM UTC-5, mark goldin wrote:
>>>>>>>>
>>>>>>>> What vm.data shown in index.html would come from if I remove the
>>>>>>>> TestMyService function?
>>>>>>>>
>>>>>>>> On Friday, September 5, 2014 1:32:11 AM UTC-5, Sander Elias wrote:
>>>>>>>>>
>>>>>>>>> Hi Mark,
>>>>>>>>>
>>>>>>>>> You mean something like this: http://plnkr.co/edit/5cE
>>>>>>>>> NSfOAhKJDI0iwe6ZV?p=preview
>>>>>>>>>
>>>>>>>>> Regards
>>>>>>>>> Sander
>>>>>>>>>
>>>>>>>>  --
>>>>>> 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.
>>>>>>
>>>>>
>>>>>  --
>>>> 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.
>>>>
>>>
>>>  --
> 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.
>

-- 
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