我有这个代码,我试图从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” 请让我知道如何解决这个问题。
答案 0 :(得分:-1)
您可以从ajax调用访问原始xhr数据,并通过覆盖parseModels方法将其转换为适当的格式:
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中以适当的格式重写响应。