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]
> <javascript:>> 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] <javascript:>.
>> To post to this group, send email to [email protected]
>> <javascript:>.
>> 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.