2016-03-22 19 views
1

işleyen bir fabrika oluşturmak MEAN JS çerçevesini ve onunla birlikte gelen hemen hemen her şeyi kullanıyorum. Ancak, bir kullanıcı belirli bir yola (url) gittiğinde özel bir sorgu eklemeye çalışıyorum. Bu ORTALAMA JS ile gelen kod şudur: (modüller/makaleler/istemci/hizmetlerde)JS yığını, iki farklı yolu

'use strict'; 

//Articles service used for communicating with the articles REST endpoints 
angular.module('articles').factory('Articles', ['$resource', 
    function ($resource) { 
    return $resource('api/articles/:articleId', { 
     articleId: '@_id' 
    }, { 
     update: { 
     method: 'PUT' 
     } 
    }); 
    } 
]); 

Ve bu olan denetleyici içindeki bütün fonksiyonlar, ilgilenir: create, update, find, findOne, remove. Şimdi denetleyicide başka bir işlev, $scope.findByCategory = function (category) {...} eklemeye çalışıyorum. Ancak, sunucuyla iletişim kurması için hizmetlerin yolunu eklemem gerekiyor.

Bunu nasıl yaparım? Servisimi (veya fabrika) nasıl düzenlerim, böylece denetleyicimde tanımladığım tüm işlevler ilgilenir. (Sunucu tarafındaki yolları zaten belirledim.) Başka bir deyişle, yukarıdaki kodu ve aşağıdaki kodu müşteri hizmetimdeki tek bir parça halinde birleştirmek istiyorum. Not: değişen tek şey yoldur.

//Articles service used for communicating with the articles REST endpoints 
angular.module('articles').factory('Articles', ['$resource', 
    function ($resource) { 
    return $resource('api/articles/category', { 
     articleId: '@_id' 
    }, { 
     update: { 
     method: 'PUT' 
     } 
    }); 
    } 
]); 

cevap

1

Yapabileceğin, bunu yapmak için birden fazla yolu vardır başka fabrika Category denilen veya böyle bir nesne dönen aynı kullanabilirsiniz:

angular.module('articles').factory('Articles', ['$resource', 
    function($resource) { 
     return { 
      articles: $resource('api/articles/:articleId', { 
       articleId: '@_id' 
      }, { 
       update: { 
        method: 'PUT' 
       } 
      }), 
      categories: $resource('api/articles/:articleId/category', { 
       articleId: '@_id' 
      }, { 
       update: { 
        method: 'PUT' 
       } 
      }) 
     }; 
    }; 
]); 

Sen için bir denetleyici onları arayacak örnek Articles.articles.get() ve Articles.categories.get()

ve muhtemelen bu yüzden articleId

için kategoriler almak api/articles/:articleId/category için kategori rotayı değiştirmek istiyorum
+0

Teşekkürler, işe yarıyor. Önerilerinizi değerlendireceğim. En sonunda Etiketler için başka bir şemaya sahip olacağım, bu yüzden iki denetleyiciye ve iki fabrikaya sahip olmak mantıklı olacaktır. – user2512806