2016-03-30 9 views
1

Ich habe dieses Werk:Konvertieren Winkel Fabrik Winkel es6 Service

.factory('FeedLoad', function ($resource) { 
    return $resource('http://ajax.googleapis.com/ajax/services/feed/load', {}, { 
     fetch: { method: 'JSONP', params: {v: '1.0', callback: 'JSON_CALLBACK'} } 
    }); 
}) 

Die Fabrik so genannt wird:

FeedLoad.fetch({ 
    q: data.responseData.url 
}, {}, function (data) { //lookup title 
    if (data.responseStatus != 200) { 
     return; 
    } 

    $scope.feed.title = data.responseData.feed.title; 
}); 

ich auf diese Weise versucht, es zu einem Winkel ES6 Dienst zu konvertieren:

class FeedParserService { 
    constructor($resource) { 
    'ngInject'; 

    RESOURCE.set(this, $resource); 
    } 
    feedLoad(){ 
    return RESOURCE.get(this)('http://ajax.googleapis.com/ajax/services/feed/lookup', {}, { 
     fetch: { method: 'JSONP', params: {v: '1.0', callback: 'JSON_CALLBACK'} } 
    }); 
    } 
} 

Und ich versuche, es so zu nennen:

data = feedParserService.feedLoad().fetch({ 
    q: this.dataSet[i].szUrl; 
}, {}, function(data){ 

}); 

Aber es scheint nicht zu funktionieren. Ich könnte bitte eine Hand gebrauchen.

+0

Gerade dies ist aus dem Weg: ist es eine Verwechslung zwischen 'feedCheck' und' feedLoad'? –

+0

ja sorry ich korrigiere es einfach. Mein Service hat zwei Methoden, ich habe nur eine in dieses Beispiel gesetzt und ich habe die falsche genommen. – Razgort

+0

Ja, ich dachte, es wäre wahrscheinlich so etwas, aber man weiß es nie. –

Antwort

0

Also für diesen Anwendungsfall sollten Sie eine Fabrik mit eher als einen Dienst.

In den meisten Fällen, in denen die factory-Methode verwendet wird, sollte sie tatsächlich die service-Methode verwenden und eine class in ES6 sein. Dieser Fall ist die Ausnahme. Sie müssen eine Factory-Methode registrieren, die $resouce factory aufruft.

In ES6 und (meist ES5, wenn Sie Import ersetzen erfordern) ist es in etwa so aussehen sollte:

import {app} from '../app';  

feedLoadFactory.$inject = ['$resource']; 
feedLoadFactory($resource) { 

    return 
     $resource('http://ajax.googleapis.com/ajax/services/feed/load', 
      {}, { 
       fetch: { 
        method: 'JSONP', 
        params: {v: '1.0', callback: 'JSON_CALLBACK'} 
       } 
     }); 
} 

app.factory('feedLoad', feelLoadFactory); 

Dann können Sie es als feedLoad injizieren und es verwenden, zu erhalten als feedLoad.fetch...

+0

Ich werde versuchen, dass in wenigen Stunden und halten Sie update. Danke für die Antwort Mann! – Razgort