2016-03-30 3 views
1

У меня есть этот завод:Преобразование углового завода угловой службы ES6

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

Завод называется так:

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

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

Я попробовал этот способ, чтобы преобразовать его в угловую службу ES6:

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'} } 
    }); 
    } 
} 

И я пытаюсь назвать это таким образом:

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

}); 

Но это не работает. Я мог бы использовать руку, пожалуйста.

+0

Просто чтобы получить это в сторону: это смесь между 'feedCheck' и' feedLoad'? –

+0

Да, простите, я просто исправлю это. Моя служба имеет два метода: я просто поместил один из них в этот пример, и я ошибся. – Razgort

+0

Да, я подумал, что это будет что-то вроде этого, но вы никогда не знаете. –

ответ

0

Для этого варианта использования вы должны использовать завод, а не сервис.

В большинстве случаев, когда используется метод factory, он фактически должен использовать метод service и быть class в ES6. Этот случай является исключением. Вам необходимо зарегистрировать фабричный метод, который вызывает $resouce factory.

В ES6 и (и в основном ES5, если заменить импорт с требуйте) он должен выглядеть примерно так:

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

Затем вы можете впрыснуть его как feedLoad и использовать его в качестве feedLoad.fetch...

+0

Я попробую это через несколько часов и продолжу обновлять. Thx для ответного человека! – Razgort