2014-02-12 43 views
0

Angular相對較新,我希望在設置一個使用ngResource而不是$ http的新工廠方面提供一些幫助,並且我可以傳遞參數給。如何使用ngResource設置和調用AngularJS工廠並使用參數調用它?

基於this例如,我已經建立了工廠如下:

app.factory('abstractFactory2', function ($resource) { 
    //var odataUrl = "/odata/ContentType"; 

    return $resource("", {}, 
    { 
     'getAll': { method: "GET", url: odataUrl, params: {options: "@options" } }, 
     'save': { method: "POST", url: odataUrl, params: { options: "@options" } }, 
     'update': { method: 'PUT', params: { key: "@key" }, url: odataUrl + "(:key)" }, 
     'query': { method: 'GET', params: { key: "@key" }, url: odataUrl + "(:key)" }, 
     'remove': { method: 'DELETE', params: { key: "@key" }, url: odataUrl + "(:key)" } 
    }); 
}); 

我已經能夠在odataUrl來自控制器的值通過,但遇到一些奇怪的行爲。

在我的控制器,在我的數據建立該呼叫是:

// TODO: pass in odata URL and odata options to factory 

var dataSource = new kendo.data.DataSource({ 
    type: "odata", 
    transport: { 
     read: 
      function (options) { 
       var odataParams = kendo.data.transports["odata"].parameterMap(options.data, "read"); // Object {$inlinecount: "allpages", $format: "json", $top: 10} 
       (new abstractFactory2.query({ options: odataParams })).$getAll() 
        .then(function (data) { 
         return options.success(data); 
        }); 
      }, . . . 

我想能夠在odataUrl通過(以及其他參數),和的OData options從函數中我的控制器,並隨後撥打update,createdestroy調用工廠。

在菲德勒我看到有兩個請求的URL的OData,一個與部分參數:

我試圖傳遞odataUrl = '/odata/contentType' and reading it in the factory with URL:「@odataUrl」`但一直沒能得到那個工作。

GET /odata/ContentType 
GET /odata/ContentType?options=%7B%7D 

我也想能在勾到呼叫的.success().error()事件。

回答

0

可能不是最好的方法,但你不能只是說url: odataUrl + params

相關問題