- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有这个代码来获取我的 Facebook 联系人列表。我如何首先对我的在线联系人列表进行排序。我在 peopleViewPerson 中检查了联系人是否在线,但我不知道如何实现这一点,我尝试过js 函数 sort() 但它在我的列表中没有给出结果。
var PeopleView = Backbone.View.extend({
className: 'peopleView',
initialize: function() {
this.people = Hula.user.get("people");
this.people.on('add', this.addPerson, this);
this.people.on('remove', this.render, this);
$(".nav_item").removeClass("nav_item_s");
$("#people_nav").addClass("nav_item_s");
},
render: function(){
this.$el.empty();
var header = $('<div id="people_header">');
var title = $('<div class="t34 title">');
title.html("Friends");
header.append(title);
this.$el.append(header);
var addOption = $('<div id="people_add_option">');
var addInput = '<div id="addp"><div id="people_add_input_h"><form id="add_person_input_form" ><input id="add_person_input" name="s" type="text" value="Enter Hularing ID..." ></input></form></div></div>';
addOption.html(addInput);
this.$el.append(addOption);
var list = $('<div id="people_list" >');
this.$el.append(list);
this.people.each(this.addPerson, this);
list.sort();
return this;
},
addPerson: function(person){
var view = new PeopleViewPerson({model: person});
this.$("#people_list").prepend(view.render().$el);
},
events: {
'keypress #add_person_input': 'addNewPerson',
},
addNewPerson: function(e){
var ID = $('#add_person_input').val();
if(ID !=="Enter Hularing ID..."){
if(e.which == 13) {
if(validate(ID)){
Hula.subscribe(ID);
this.$('#add_person_input').val("")
$("#add_person_input_form")[0].reset();
$('#add_person_input').blur().focus();
e.preventDefault();
}
}
}
}
});
var PeopleViewPerson = Backbone.View.extend({
className: 'friend_holder',
initialize: function() {
$(this.el).attr('id', jid_to_id(this.model.get("jid")));
this.model.on('all', this.render, this);
this.model.get('conversation').get('messages').on('add', this.onNewMessage, this);
},
render: function() {
var img = $('<div class="friend_img_h">');
if(this.pic() == null){
if(this.online() === true){
img.html('<img src="farax/img/default.png" style="border:4px solid green;" />');
} else {
img.html('<img src="farax/img/default.png" style="border:4px solid white;" />');
}
} else {
var img_src = 'data:'+this.picType()+';base64,'+this.pic();
if(this.online() === true){
img.html('<img src="'+img_src+'" style="border:4px solid green;" height="50" width="50"/>')
} else {
img.html('<img src="'+img_src+'" style="border:4px solid white;" height="50" width="50"/>')
}
}
var info_h = $('<div class="friend_info_h">');
var person_name = $('<div class="friend_name">');
person_name.html(this.name());
var line2 = $('<div class="friend_line2">');
var status = this.status();
line2.html(status);
var option_h = $('<div class="friend_option_h">');
option_h.html('<div class="msg_person_icon" ></div>');
// CONTACT INFO DIV.
var option_h1 = $('<div class="friend_option_h1">');
// CONTACT INFO IMAGE IN CSS FILE.
option_h1.html('<div class="msg_person_icon1"></div>');
// CONTACT FACEBOOK TIJDLIJN.
var option_h2 = $('<div class="friend_option_h2">');
// CONTACT FACEBOOK TIJDLIJN IMAGE IN CSS FILE.
option_h2.html('<div class="msg_person_icon2"></div>');
var option_h3 = $('<div class="friend_option_h3">');
option_h3.html('<div class="msg_person_icon3"></div>');
// HUIDIG CONTACT NAAM.
var naam = this.name();
// MET HET REGISTREREN VAN NIEUWE GEBRUIKERS WORDT DE GEBRUIKERSNAAM Robert0Ilmer DUS ZET IK BIJ DE CONTACT
// NAAM EEN 0 OP DE PLAATS VAN DE SPATIE OM ZE HETZELFDE TE MAKEN.
var naam1 = naam.replace(" ","0");
var temp = "";
// TEMP IS OM HET ARRAY ITEM OP TE SLAAN ALS DE NAAM NIET OVEREENKOMT, DIT IS DE IMAGE URL DIE STAAT VOOR
// DE NAAM DUS OP DIE MANIER HEB IK DE IMAGE URL AL OPGESLAGEN IN TEMP EN KAN IK HET GEBRUIKEN ALS DE NAAM
// GEVONDEN IS.
javaScript_array.forEach( function (arrayItem, index){
var x = arrayItem;
// VERGELIJK DE NAAM UIT DE DATABASE MET DE NAAM IN DE JAVASCRIPT ARRAY GEDEFINIEERD IN
// ../HU1/INDEX.PHP
if(naam1 === arrayItem){
// VOOR DEBUGGING
// alert(index + ': ' + x);
option_h3.html('<div class="msg_person_icon3"><img src="'+ temp +
'" width="35" height="35"/></div>');
}
temp = x;
});
if(this.ask()== "subscribe"){
line2.prepend('<span class="pending_out">Request pending.</span>');
}
if(this.pending()){
line2.prepend('<span class="pending_in">Pending authorisation!</span>');
}
info_h.append(person_name).append(line2);
this.$el.html(img);
this.$el.append(info_h);
this.$el.append(option_h);
this.$el.append(option_h1);
this.$el.append(option_h2);
this.$el.append(option_h3);
return this;
},
jid: function() { return this.model.get('jid');},
name: function() { return this.model.get('name'); },
status: function() { return this.model.get('status'); },
pic: function() { return this.model.get('picture').pic; },
picType: function() { return this.model.get('picture').picType; },
ask: function() { return this.model.get('ask'); },
subscription: function() { return this.model.get('subscription'); },
pending: function() { return this.model.get('pending'); },
online: function() { return this.model.get('online'); },
events: {
'click .friend_img_h': 'loadPerson',
'click .msg_person_icon1': 'fbInfo',
'click .msg_person_icon': 'messagePerson'
},
fbInfo: function(){
// DE STRING idsd BEVAT NU -11107049625@chat.facebook.com
var idsd = this.jid();
// VOOR DEBUGGING
// alert(idsd);
// ZOEK NAAR @chat.facebook.com EN VERVANG HET MET NIKS DUS VERWIJDER HET.
var id1 = idsd.replace("@chat.facebook.com","");
// alert(id1);
// NU BEVAT id1 DIT -11107049625 DUS ZOEKEN WE NAAR - EN VERWIJDEREN HET.
var id2 = id1.replace("-","");
// alert(id2);
// NU BEVAT id2 HET ID NUMMER VAN HET AANGEKLIKTE CONTACT EN KUNNEN WE DE .
myFunction(id2);
},
loadPerson: function(){
Hula.screen.person.render(this.model);
},
messagePerson: function(){
Hula.screen.conversation.render(this.model);
},
onAll: function(person){
},
onNewMessage: function(message){
$('#people_list #'+jid_to_id(this.jid())+' .friend_line2').html(message.get("message"));
},
OnStatusChange: function(change){
$("#people_list #"+id_to_jid(this.jid())).html(this.status().toString());
}
});
我有这个集合,我在其中放置了比较器,但它没有对我的列表进行排序
var Person = Backbone.Model.extend({
defaults: {
jid : null,
name : null,
online: false,
status : null,
picture : {
pic : null,
picType : null
},
subscription: 'none',
ask: null,
pending: false,
counter: { messages:0, stuff:0 },
conversation: null
},
initialize: function(){
this.set('conversation', new Conversation());
this.sortVar = 'name';
},
comparator: function( collection ){
var that = this;
return( collection.get( that.sortVar ) );
},
updateName: function(name){this.set("name", name);},
updateOnline: function(online){this.set("online", online);},
updatePicture: function(picture){ this.set("picture", picture);},
updateSubscription: function(subscription){this.set("subscription", subscription) ;},
updateAsk: function(ask){this.set("ask", ask);},
updateStatus: function(status){this.set("status", status);},
updatePending: function(pending){this.set("pending", pending);}
})
var People = Backbone.Collection.extend({
model: Person;
});
如果我将比较器放在主干中。集合它可以工作,但我必须解释一下。它一次将所有名称与标准图像一起放置,并且在此过程中一次出现一个联系人的图像我可以看到排序功能正在工作,因为图像按字母顺序显示,而不是从下到上,但完成后列表没有排序。我希望我足够清楚。
最佳答案
您需要在您的个人集合中添加一个比较器
。添加模型时,主干集合会自动排序。
var People = Backbone.Collection.extend({
model: Person,
comparator: function(model){
return model.get('online') ? 0 : 1;
}
});
如果用户在线,则返回0
,如果不在线,则返回1
。 Backbone.Collection.sort()
按升序排序,因此零将出现在 1 之前。
根据下面的评论,尝试一下:
var People = Backbone.Collection.extend({
model: Person,
comparator: function( model ){
var online = model.get('online') ? 0 : 1;
var name = model.get('name');
return [online, name]; // this will sort by online status first, then person name
}
});
关于javascript - backbone js 对我的联系人列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22026127/
我正在学习构建单页应用程序 (SPA) 所需的所有技术。总而言之,我想将我的应用程序实现为单独的层,其中前端仅使用 API Web 服务(json 通过 socket.io)与后端通信。前端基本上是
当我看到存储在我的数据库中的日期时。 这是 正常 。日期和时间就是这样。 但是当我运行 get 请求来获取数据时。 此格式与存储在数据库 中的格式不同。为什么会发生这种情况? 最佳答案 我认为您可以将
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我正在尝试使用backbone.js 实现一些代码 和 hogan.js (http://twitter.github.com/hogan.js/) Hogan.js was developed ag
我正在使用 Backbone.js、Node.js 和 Express.js 制作一个 Web 应用程序,并且想要添加用户功能(登录、注销、配置文件、显示内容与该用户相关)。我打算使用 Passpor
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 8 年前。 Improve this ques
我尝试在 NodeJS 中加载数据,然后将其传递给 ExpressJS 以在浏览器中呈现 d3 图表。 我知道我可以通过这种方式加载数据 - https://github.com/mbostock/q
在 node.js 中,我似乎遇到了相同的 3 个文件名来描述应用程序的主要入口点: 使用 express-generator 包时,会创建一个 app.js 文件作为生成应用的主要入口点。 通过 n
最近,我有机会观看了 john papa 关于构建单页应用程序的精彩类(class)。我会喜欢的。它涉及服务器端和客户端应用程序的方方面面。 我更喜欢客户端。在他的实现过程中,papa先生在客户端有类
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我是一个图形新手,需要帮助了解各种 javascript 2D 库的功能。 . . 我从 Pixi.js 中得到了什么,而我没有从 Konva 等基于 Canvas 的库中得到什么? 我从 Konva
我正在尝试将一些 LESS 代码(通过 ember-cli-less)构建到 CSS 文件中。 1) https://almsaeedstudio.com/ AdminLTE LESS 文件2) Bo
尝试查看 Express Passport 中所有登录用户的所有 session ,并希望能够查看当前登录的用户。最好和最快的方法是什么? 我在想也许我可以在登录时执行此操作并将用户模型数据库“在线”
我有一个 React 应用程序,但我需要在组件加载完成后运行一些客户端 js。一旦渲染函数完成并加载,运行与 DOM 交互的 js 的最佳方式是什么,例如 $('div').mixItUp() 。对
请告诉我如何使用bodyparser.raw()将文件上传到express.js服务器 客户端 // ... onFilePicked(file) { const url = 'upload/a
我正在尝试从 Grunt 迁移到 Gulp。这个项目在 Grunt 下运行得很好,所以我一定是在 Gulp 中做错了什么。 除脚本外,所有其他任务均有效。我现在厌倦了添加和注释部分。 我不断收到与意外
我正在尝试更改我的网站名称。找不到可以设置标题或应用程序名称的位置。 最佳答案 您可以在 config/ 目录中创建任何文件,例如 config/app.js 包含如下内容: module.expor
经过多年的服务器端 PHP/MySQL 开发,我正在尝试探索用于构建现代 Web 应用程序的新技术。 我正在尝试对所有 JavaScript 内容进行排序,如果我理解得很好,一个有效的解决方案可以是服
我是 Nodejs 的新手。我在 route 目录中有一个 app.js 和一个 index.js。我有一个 app.use(multer....)。我还定义了 app.post('filter-re
我正在使用 angular-seed用于构建我的应用程序的模板。最初,我将所有 JavaScript 代码放入一个文件 main.js。该文件包含我的模块声明、 Controller 、指令、过滤器和
我是一名优秀的程序员,十分优秀!