2013-05-17 14 views
0

В текущем проекте я хотел бы использовать службу $ http для углового, чтобы делать HTTP-запросы в моих источниках данных Kendo, потому что я использую ответный перехватчик, как описано в этом блоге:KendoUI DataSource - OData querystring из атрибута фильтра

http://www.espeo.pl/2012/02/26/authentication-in-angularjs-application

Я использую KendoUI сетки в моем приложении для отображения данных, которые я получаю в формате JSON от сервера. По какой-то причине запрос odata обрезается, если я укажу функцию в объекте «транспорт», и только URL-адрес отправляется на сервер (example.com/odata/Foo), а не полный запрос (example.com/odata/foo? $ filter = barId lt 100).

Я настроил свой Кендо DataSource, как это:

$scope.foo = new kendo.data.DataSource({ 
     type: "odata", 
     pageSize: 25, 
     serverPaging: true, 
     serverFiltering: true, 
     serverSorting: true, 
     transport: { 
      read: function (options) { 
       $http({ 
        url: '/odata/foo', 
        method: 'GET', 
        params: options.data 
       }) 
       .success(function (result) { 
        options.success(result); 
       }); 
      }, 
      parameterMap: function (options, type) { 
       return kendo.data.transports["odata"].parameterMap(options, type); 
      } 
     } 

HTTP запросы с помощью службы $ HTTP угловой работы штрафа, я не имею проблем с этим. Проблема в том, что я не могу получить часть запроса (URL?$filter=[filter expression]) из объекта «filter» в моем источнике данных кендо. Я попытался использовать параметр parameterMap, но это также не дало желаемых результатов.

+0

Вы спрашиваете, как использовать службу $ http углового для HTTP-запросов? что ты уже испробовал? – Kobunite

+0

HTTP-запросы с использованием службы http-адресов угловой работы отлично, у меня нет проблем с этим. Проблема в том, что я не могу получить часть запроса (URL? $ Filter = [выражение фильтра]) из объекта «фильтр» в моем источнике данных кендо. Я попытался использовать параметр parameterMap, но это также не дало желаемых результатов. – Steffen

+0

Steffen, у меня такая же проблема. Вы когда-нибудь находили способ сделать это? – kbmax

ответ

1

Вместо того, чтобы делать это в функции отображения параметров:

kendo.data.transports["odata"].parameterMap(options, type); 

, который, кажется, не будет вызываться, когда свойство чтения на транспорте отображается в функции. Вы можете называть это в функции transport.read:

transport: { 
    read: function (options) { 
     var odataParams = kendo.data.transports["odata"].parameterMap(options.data, "read"); 
     $http({ 
     url: '/odata/foo', 
     method: 'GET', 
     params: odataParams 
     }) 
     .success(function (result) { 
     options.success(result); 
     }); 
    } 
    } 
Смежные вопросы