我正在从xml提要创建主干集合。xml提要返回110篇文章(它是外部的,无法返回更少的文章)。我加载到主干集合中,如下所示:
parse: function (data) {
xml = data;
$(xml).find('item').each(function (index) {
title = $(this).find('title').text();
description = $(this).find('description').text();
author = $(this).find('author').text();
pubDate = $(this).find('pubDate').text();
img = $(description).find('img:first');
if(img.length){
src = img.attr('src');
}
parsed.push({id:id, title: title, author:author,
description:description, pubDate:pubDate, src:src});
});
return parsed;
},
然后,我在列表底部显示带有“加载更多”按钮的前10个项目。当用户单击“加载更多”时,我想从主干集合中加载接下来的10个项目。在视图中,我这样做:
loadMore: function(){
var ul = $('#news-list');
var id = ul.find('li:last-child').data("id");
var li="";
_.every(this.collection.toJSON(), function(item) {
if(item.id>id){
li += '<li class="topcoat-list__item" data-id="'+item.id+'">';
li += '<a href="#news-item/<%= item.id %>">';
li += '<img height="30" width="30" src="'+item.src+'">';
li += '<p>'+item.title+'</p>';
li += '<p>'+item.pubDate+'</p>';
li += '<span class="chevron"></span>';
li += '</a>';
li += '</li>';
}
if(item.id>(id+10)){
console.log('in loadMore if');
return false;
}
return true;
});
ul.append(li);
}
因此,each循环遍历前10个项目,跳过它们,因为它们已经加载(并且小于最后一个li子项的id),然后在接下来的10个项目上创建列表元素html,然后退出。但这似乎效率低下。有没有更好的方法来完成这个过程?
首先:考虑对li元素使用下划线模板,这将使其更加容易,而无需使用串联字符串来生成html代码块。
第二:如果您认为循环效率低下,请从您需要的项目开始(基于您的代码,未经测试,只是跳过不需要的循环)
var ul = $('#news-list');
var id = ul.find('li:last-child').data("id");
for (var i=(0+id);i<=(9+id);i++){
var item = this.collection.at(i).toJSON();
var li="";
li += '<li class="topcoat-list__item" data-id="'+item.id+'">';
li += '<a href="#news-item/<%= item.id %>">';
li += '<img height="30" width="30" src="'+item.src+'">';
li += '<p>'+item.title+'</p>';
li += '<p>'+item.pubDate+'</p>';
li += '<span class="chevron"></span>';
li += '</a>';
li += '</li>';
ul.append(li);
}
使用下划线:
var ul = $('#news-list');
var id = ul.find('li:last-child').data("id");
for (var i=(0+id);i<=(9+id);i++){
var li= _.template( $('#li-template').html(), {"item":this.collection.at(i).toJSON() } );
ul.append(li);
}
$(“#li模板”)。html()类似于:
<li class="topcoat-list__item" data-id="<%= item.id%>">
<a href="#news-item/<%= item.id %>">
<img height="30" width="30" src="<%= item.src%>">
<p><%= item.title %></p>
<p><%= item.pubDate %></p>
<span class="chevron"></span>
</a>
</li>
使用Backbone.js作为Rails应用的前端框架。就Rails模型而言,我有一个发布模型和一个文章模型。每个出版物与许多文章相关联,并且每个文章只属于一个出版物。当用户决定删除一个出版物时,我希望所有相关的文章也被删除。我说的删除是指从数据库中删除。 以下代码适用于从数据库中删除指定的发布,但不适用于删除关联的项目: 我还试着移动这些文章。destroy()行在success函数中,但这也不
假设我有这样一个json设置: 和一个这样的模型: 获取此json后,如何将设置为ItemCollection集合的项映射并将页码作为属性添加到集合中?
问题内容: 我有非常大的XML文件要处理。我想将它们转换为具有颜色,边框,图像,表格和字体的可读PDF。我的机器上没有很多资源,因此,我需要我的应用程序对内存和处理器的寻址非常理想。 我进行了不起眼的研究,以使自己对所使用的技术有所了解,但是我无法确定什么是满足我的要求的最佳编程语言和API。我认为DOM不是一个选择,因为它会占用大量内存,但是带SAX解析器的Java是否可以满足我的要求? 有人还
问题内容: 我需要一个XML解析器来解析大约1.8 GB的文件。 因此,解析器不应将所有文件加载到内存中。 有什么建议? 问题答案: 除了推荐的SAX解析之外,您还可以使用JDK(包javax.xml.stream)中包含的StAX API(一种SAX演进)。 StAX项目主页:http://stax.codehaus.org/Home 简介:http : //www.xml.com/pub/a/
问题内容: 我有以下问题: 我有一个XML文件(大约1GB),并且必须上下迭代(即不连续;一个接一个),以便获取所需的数据并对其进行一些操作。最初,我使用了DOM Java包,但是很显然,在解析XML文件时,JVM达到了其最大堆空间并停止了运行。 为了解决这个问题,我想到的解决方案之一是找到另一个解析器,该解析器迭代XML中的每个元素,然后将其内容存储在硬盘上的临时SQLite数据库中。因此,通过
通过Threejs先加载一个.FBX格式的三维模型文件,然后解析该文件中的骨骼动画信息。 加载器FBXLoader.js 引入FBX加载器相关文件 <!-- 引入fbx模型加载库FBXLoader --> <script src="https://www.wenjiangs.com/wp-content/uploads/three.js/examples/js/loaders/FBXLoader.