2016-04-06 47 views
0

我有這樣的代碼,其中我試圖檢索model.findall數據(),並顯示在用戶界面的表格中顯示的數據能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

您可以通過重寫parseModels方法從Ajax調用訪問原始XHR數據,並將其轉換成合適的格式:

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

改寫parseModels如果您的服務回報數據,如:

{thingsToDo:[{name:「dishes」,id:5}]}您將需要覆蓋 parseModels以傳遞它所期望的模型:

Task = can.Model.extend({parseModels:function(data){return data.thingsToDo; }},{});你也可以這樣做:

Task = can.Model.extend({parseModels:「thingsToDo」},{}); can.Model.models將每個實例的數據傳遞給can.Model.model到 創建單個實例。

在上面的示例中,響應是一個嵌套的JSON:在您的實例中,它是您的過程或宏。您有機會在parseModels中以適當的格式重寫響應。