Js和Model.findAll()无法在UI中显示数据

时间:2016-04-06 13:03:21

标签: canjs

我有这个代码,我试图从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 个答案:

答案 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中以适当的格式重写响应。