使用敲门.js在Django模板中填充表格 - javascript

这是我第一次尝试使用Knockout javascript。我对此很天真,请原谅。

我有一个给出json响应的视图。

views.py

    def get(self, request, code, format=None):
        data = self.get_details(code)
        paginator = Paginator(data, self.paginate_by)
        page = request.GET.get('page', 1)
        context = {}
        try:
            data_sent = paginator.page(page)
        except PageNotAnInteger:
        # If page is not an integer, deliver first page.
            data_sent = paginator.page(1)
        except EmptyPage:
        # If page is out of range (e.g. 9999), deliver last page of results.
            data_sent = paginator.page(paginator.num_pages)
        context['data'] = self.get_user(chain_code)        
        context['page_object'] = data_sent.object_list
        context['code'] = code
        data = json.dumps(context, cls=DjangoJSONEncoder)
        return HttpResponse(data)

我想使用此响应在Django模板的表中填充context ['data'],如下所示:

Id  Name  Status

1   xyz    1
2   abc    2

datalist.html

    <script src="{% static "jsscript/datalist.js" %} "></script>

        <div class = "container">
           <div class = "page-header">


 <!---all headers data --->
       </div>
       <div class="tab-content">
           <table class="table table-bordered listingtable" >
                <thead>
                    <tr>
                      <th style="width: 10%;">Id</th>
                      <th style="width: 10%;">Name</th>
                      <th style="width: 20%;">Status</th>
                    </tr>
                  </thead>    

              <tbody>
               <!----script to populate table--->

             </tbody>
        </table>

我已经看过了基因敲除官方教程,但是我不确定如何从我的API访问响应并填充模板中的表格。

到目前为止我尝试过的是:

数据清单

var ViewModel = function(data) {
  var self = this;
    self.Id = ko.observable(data.id);
    self.Name = ko.observable(data.name);
    self.status = ko.observable(data.status);
};

ko.applyBindings(new ViewModel(data)); 

我知道这个解决方案是完全错误的,但是我不确定如何正确地前进,有人能启发我吗?

参考方案

下面显示了当从服务器获取数据时(如何使用Ajax)如何在淘汰表中填充数据。

示例:https://jsfiddle.net/kyr6w2x3/108/

HTML:

   <table class="table table-bordered listingtable" >
     <thead>
       <tr>
         <th >Id</th>
         <th>Name</th>
         <th>Status</th>
       </tr>
     </thead>    
     <tbody data-bind="foreach:YourArrayList">
       <tr>
         <td data-bind="text:Id"></td> 
         <td data-bind="text:Name"></td>
         <td data-bind="text:Status"></td>
       </tr>                  
     </tbody>
   </table>

JS:

var yourData = [{id:1,name:"AAA" ,status:"AAA-status" },{id:2,name:"BBB" ,status:"BBB-status" },{id:3,name:"CCC" ,status:"CCC-status" }];

var MainViewModel = function() {
    var self = this;
    self.YourArrayList= ko.observableArray();
    self.YourArrayList($.map(yourData, function (item) {
             return new StatusItemViewModel (item);
        }));
};
var StatusItemViewModel = function(data) {
    var self = this;
    self.Id = ko.observable(data.id);
    self.Name = ko.observable(data.name);
    self.Status = ko.observable(data.status);
};

ko.applyBindings(new MainViewModel ()); 

Telerik单选按钮所需的字段验证器 - javascript

如何设置Telerik单选按钮所需的字段验证器?我想在按钮单击“ BtnSave”上设置必填字段验证器吗?请帮忙!<telerik:RadButton ID="radio_male" runat="server" ToggleType="Radio" AutoPostBack="fa…

在PHP文件中调用javascript函数并在加载HTML文件之后? - javascript

我需要在我的php中调用js函数,但无法正常工作。有人可以告诉我我在做什么错吗?我该如何轻松地做到这一点?谢谢!我有三个文件:  mail.php负责发送$ _POST的内容(工作正常)。我调用我的javascript函数来切换模式,具体取决于邮件是否已发送。 <? ... $response = $sendgrid->send($email);…

如何使用PHP从动态输入字段捕获数组值? - javascript

我正在编写一个在线时间跟踪网页,允许用户将学习时间输入该系统。用户将首先输入名称,然后根据日期输入学习时间。一天中可能会有多个学习时间。以下是我第一页的编码,<head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"…

使用php重新加载内容 - javascript

在对网站进行编程时,我以前使用过此代码,它可以完美工作,但是现在当我想使用一些Flash部件时,每次单击链接时,它都会重新加载所有网站。源代码: <!DOCTYPE html> <html> <head> <title>Hot King Staff</title> <meta charset=…

用jQuery填充模式形式 - javascript

我正在将订单表从数据库绘制到datatables(jquery插件)中。我要在每笔最后一笔交易或每笔交易中增加付款。问题是,如何获取单击添加付款按钮以添加付款的行的订单ID。其次,当点击addpayment时,它会弹出一个带有字段或订单号的模态表单。我想用在td中找到的订单ID填充该字段,并使其不可编辑或隐藏,但在提交模态表单时将其发布到服务器。表格和模式表…