2016-04-06 5 views
0

にデータを表示することができない私は(私はmodel.findallからデータを取得しようとしていますこのコードを持っている)とUIの表示テーブルとして缶のJsとModel.findAll()UI

model.js

define(['jquery', 'can'], function ($, can) { 
var serviceModel = can.Model.extend({ 
    findAll: function (params,servicename) { 
     return $.ajax({ 
      type: 'POST', 
      dataType: 'JSON', 
      contentType: 'application/json', 
      url: 'data/+ servicename', 
      success: function (data) { 
       console.log("Success "); 
      }, 
      error: function() { 
       console.log("Error"); 
      } 
     }); 

    } 

}, {}); 
return serviceModel; 

});

controller.js

  serviceModel.findAll(params,"SP_table", function(data) { 
       if (data.status === "success") { 
        $('#idtable').dataTable().fnClearTable(); 
        $('#idtable').dataTable().fnAddData(data.result); 
       }else{ 
        alert("inside alert"); 
       } 
      }); 

データは、私が取得していますストアドプロシージャまたはマクロの形であるため、問題はserviceModel.findAll()私は(serviceModel.findAll内のデータを取得することができません)であります上記の関数から "servicename"を使用してください。 この問題を解決する方法を教えてください。

答えて

-1

あなたはAJAX呼び出しからの生XHRデータにアクセスし、parseModelsメソッドをオーバーライドして、適切な形式に変換することができます:

parseModelsを上書き

https://canjs.com/docs/can.Model.parseModels.html

のようなあなたのサービスが返すデータの場合:

parseModelsを上書きして、期待どおりのモデルを渡したい場合は、

と入力してください。

{thingsToDo:[{name: "dishes"、id:5}]}

タスク= can.Model.extend({parseModels:function(data){return data.thingsToDo; }}、{});

タスク= can.Model.extend({parseModels: "thingsToDo"}、{});このようにすることもできます。 can.Model.modelsは、各インスタンスのデータをcan.Model.modelに に渡します。個々のインスタンスを作成します。

上記の例では、レスポンスはネストされたJSONです。あなたの中では、プロシージャまたはマクロです。 parseModelsでは、応答を適切な形式で書き換えることができます。

関連する問題