2

私はこのような大データの結果を持っています

        {"odata.metadata":"https://localhost/DocTalkMobileWebApiOData/odata/$metadata#MasterPatient/@Element","PatUniqueId":"39e713db-6a0e-4e59-bf7b-033f4fc47ad5",  "PatID":null,
"pat_lname":"White","pat_fname":"Peter","pat_mi":"     ","pat_ssn":"270787655","pat_dob":"08/07/1973","pat_sex":"M","pat_status":null,"priInsID":2,"secInsID":1,"PCPID":1,"InternalDrID":1,"EXPID":1,"EXPDate":"","pat_phone":null,"isNew":true,"imported":true,"byWhom":"dt","lastUpdate":"2011-03-30T09:41:57.36","changeStamp":"AAAAAAAAIUE=","address":"","city":"","state":"","zip":"","currentMcp":"","currentVisitCount":-2,"otherId":"543674","pcpName":null,"hasChanges":true,"ProgramSource":null,"mrnID":"","createdBy":null,"createdDate":"2007-10-26T10:16:15","expLocation":null,"ethnicId":1,"prefLanguageId":1,"raceId":1
    }

kendo.ui.datasource 経由でこの結果を取得しようとしました:

 newPatient = new kendo.data.DataSource({
        type: 'odata', // <-- Include OData style params on query string.
        transport: {
            read: {
                url: url + '/MasterPatient(guid\'00000000-0000-0000-0000-000000000000\')', // <-- Get data from here
                dataType: "json" // <-- The default was "jsonp"
            },

            parameterMap: function (options, type) {
                var paramMap = kendo.data.transports.odata.parameterMap(options);

                delete paramMap.$inlinecount; // <-- remove inlinecount parameter.
                delete paramMap.$format; // <-- remove format parameter.

                return paramMap;
            }
        },
        schema: {
            data: function (data) {                 
                return data;
            },
            total: function (data) {                 
             return  data['odata.count']
            },
        }
    });
    newPatient.fetch(function () {
        kendo.bind($('#newPatientTab'), newPatient);
    });

しかし、なぜそれが常にエラーをスローするのか分かりません:

Uncaught TypeError: Object [object global] has no method 'slice' 

私を助けてください。ありがとう

4

2 に答える 2

6

Kendo UI では、DataSource は配列でのみ機能します。サーバーの応答を変更して、このようなものを送信できる場合

[{"odata.metadata":"https://localhost/DocTalkMobileWebApiOData/odata/$metadata#MasterPatient/@Element","PatUniqueId":"39e713db-6a0e-4e59-bf7b-033f4fc47ad5","PatID":null,"pat_lname":"White","pat_fname":"Peter","pat_mi":"     ","pat_ssn":"270787655","pat_dob":"08/07/1973","pat_sex":"M","pat_status":null,"priInsID":2,"secInsID":1,"PCPID":1,"InternalDrID":1,"EXPID":1,"EXPDate":"","pat_phone":null,"isNew":true,"imported":true,"byWhom":"dt","lastUpdate":"2011-03-30T09:41:57.36","changeStamp":"AAAAAAAAIUE=","address":"","city":"","state":"","zip":"","currentMcp":"","currentVisitCount":-2,"otherId":"543674","pcpName":null,"hasChanges":true,"ProgramSource":null,"mrnID":"","createdBy":null,"createdDate":"2007-10-26T10:16:15","expLocation":null,"ethnicId":1,"prefLanguageId":1,"raceId":1}]

その後、正常に動作します。注:配列形式です。

また

スキーマのデータ関数内で、クライアント側で単一のオブジェクトを配列にラップできます。

schema: {
  data: function(server-response) {
    return [server-response];
  }
}

剣道チームは、優れたドキュメンテーションにもっと時間を割くべきです。

于 2013-10-25T05:38:17.083 に答える
3

これは、バッキングから odata ソースを使用していないことを意味します。この場合、バックエンドが odata を正しくサポートしていない場合、クライアントから剣道 odata ソースが本当に必要かどうかを考える必要があります。

http://services.odata.org/Northwind/Northwind.svc/ ?$format=jsonという odata URL からのこの応答を参照してください。

フィールド内のオブジェクトの配列を返す必要がありvalueます。バックアップを変更できない場合は、Schema.data 関数でデータをフォーマットすることができます。

schema: {
        data: function (data) {                 
            return [data];
        },
于 2013-10-25T05:40:03.980 に答える