2016-04-06 5 views
0

ich diesen Code haben, wo ich Daten von model.findall() und Anzeige in UI versuche als TabelleKann Js und Model.findAll() keine Daten angezeigt werden in UI

model.js abrufen

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"); 
       } 
      }); 

Ausgabe in serviceModel.findAll ist() Ich bin nicht in der Lage Daten innerhalb serviceModel.findAll zu bekommen(), weil die Daten in Form von gespeicherten Prozedur oder Makro, das ich erhalte mit "servicename" von Funktion über lassen Sie mich bitte wissen, wie dieses Problem zu lösen.

Antwort

-1

Sie können die rohen xhr Daten aus dem Ajax-Aufruf zugreifen und es in ein geeignetes Format konvertieren, indem die parseModels Methode überschrieben:

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

Überschreibung parseModels Wenn Ihr Dienst gibt Daten wie:

{setsToDo: [{Name: "Gerichte", ID: 5}]} Sie werden parseModels überschreiben, um die Modelle zu übergeben, wie es erwartet:

Task = can.Model.extend ({parseModels: function (data)) {return data.thingsToDo; }}, {}); Sie könnten auch Folgendes tun:

Task = can.Model.extend ({parseModels: "sachenToDo"}, {}); can.Model.models übergibt die Daten jeder Instanz an can.Model.model an erstellt die einzelnen Instanzen.

In ihrem obigen Beispiel ist die Antwort ein geschachtelter JSON: in Ihrem Fall ist es Ihre Prozedur oder Ihr Makro. Sie haben hier in parseModels die Möglichkeit, die Antwort im entsprechenden Format neu zu schreiben.

Verwandte Themen