在django模板中使用knockout.js填充表格
populate table in django template using knockout.js
这是我第一次尝试我的手在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)
我想使用这个响应来填充context['data']在我的django模板中的表中,像这样:
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>
我已经完成了knockout.js的官方教程,但我不确定如何从我的API访问响应并在模板中填充表。
我已经试过了:
datalist.js
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)如何在knockout中将数据填充为表。
示例: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 ());
相关文章:
- 无法获取属性'Id'使用Knockout.js的未定义或空引用API
- 如何将Knockout.JS与服务器已经在DOM中呈现的数据同步
- Knockout.JS标签在foreach内部不起作用
- 使用Knockout JS从下拉框中向observalearray添加项
- 使用knockout.js将数组绑定到视图模型
- 如何使用Jasmine测试Knockout.js点击绑定
- 类似于Prism的Knockout js框架
- Knockout JS和简单的函数
- Knockout.js中带有if:子句的嵌套循环
- Knockout JS中具有下拉列表的数组
- Knockout.JS,模板都是通过表单不添加数据的
- 在Knockout JS中搜索从DB加载数据的项目
- 使用Knockout.js动态更改facebook数据
- $root在knockout.js中解析为空白页
- knockout.js中的绑定多下拉列表
- 在Knockout js中创建一个包含多行的表,而不需要推送
- 如何基于Knockout js模型设计控件样式
- 从对象内部调用knockout.js ko.applyBindings()
- 在Knockout.js模型中创建项之间的关系
- 复选框列表在Knockout JS中不起作用