我有一个只有一个id列表的数组,如下所示:
$my_array = array(
12, 17, 99, 23
);
Run Code Online (Sandbox Code Playgroud)
现在我知道我可以做以下事情:
function in_array($haystack = array(), $needle = NULL)
{
foreach($haystack as $id)
{
if ($id == $needle)
{return TRUE;}
else
{return FALSE;}
}
}
Run Code Online (Sandbox Code Playgroud)
但似乎可能已经建立了一个功能.我能用什么?
所以我有一个数据表,我正在使用ajax获取数据.检索数据时,表格中的数据消失,出现一个小的加载圆圈.我更喜欢保留数据(我知道该怎么做)以及加载圆圈出现在它的中心的桌子上(不一定是垂直的,至少是水平的),还有一个稍微透明的背景阻挡表格的视图有点(不是网页的其余部分).如何在桌面上显示div并执行此操作?
我有一个容纳一些用户的集合.需要的一些信息是总数,页数等等.如何将这些信息传递回客户端?或者他们必须来自一个单独的视图,在这种情况下,我将需要多个ajax调用?我想收集这些收藏品fetch()并收到一些"元数据".处理这个问题的好方法是什么?
所以,我有这个代码:
$(document).ready(function(){
$('form').attr('autocomplete', 'off');
});
Run Code Online (Sandbox Code Playgroud)
它适用于所有已存在的表格.问题是,我的某些形式是通过ajax加载弹出窗口.这不适用于他们,因为他们以后会"加载".
我知道有一个live()函数 - 但这仅用于附加事件.将此应用于所有表单的好方法是什么?
谢谢.
所以为了保持井井有条,我有几个javascript文件,即使它们全部(最终)被缩小在一起形成一个最终的javascript文件.
每个文件的内容都包含在:
$(document).ready(function(){
//some javascript here
});
Run Code Online (Sandbox Code Playgroud)
好像我把东西放在单独的文件中(在那些代码之间),它们彼此无法访问.这是范围问题吗?我能做什么?
例如,在一个文件中,我有一堆代码来根据通过ajax接收的数据创建表.但是,该文件的一半只是模板,用于显示数据,具体取决于它的类型等.我想将模板放在他们自己的文件中.
我知道这只是一个"偏好"问题,我可以把它全部放在一个文件中.
但我希望从中学到这一点,甚至可以让它成为"我的"方式.
我理解如何将一个集合或一个单独的模型.我通常可以获得要显示的模型数据.但是我根本不清楚如何拍摄一个集合并获得该集合中的模型列表来显示.
我应该迭代集合并单独渲染每个模型吗?那应该是集合渲染功能的一部分吗?
或者该集合是否拥有自己的视图,并以某种方式将整个集合数据填充到视图中?
一般来说,显示模型列表的常规方法是什么?
我正在使用backbone.js
例如,假设我们有一个"产品"模型和一个具有多对多关系的"类别"模型.在我的一个观点中,假设我需要检索所有类别的列表,并知道每个类别是否与当前产品模型相关.
我是否设置了"类别"集合并将其作为我的模型的属性,并以某种方式让它访问模型的ID,以便在获取时,它只获取相关的类别?然后我可以获取所有类别并交叉检查它们以查看哪些类别相关,同时还有那些不相关的类别?
我不知道最好的办法是什么.我习惯使用ORM,这在服务器端很容易.
我正在使用backbone.js以及jquery和underscore.js
这是我的一些代码(它还没有做任何事情).奇怪的是,在点击网址"/#users"时没有错误.错误发生的唯一时间是我然后单击以转到其他哈希,然后单击返回以转到"/#users".这是我的代码的一部分,到最后收到错误的行,错误Users = new Users();显示"用户不是构造函数":
var User = Backbone.Model.extend({
url: function(){return 'api/user/id/' + this.id;}
});
var Users = Backbone.Collection.extend({
model: User,
url: function(){return 'api/users';},
initialize: function() {
}
});
var UsersView = Backbone.View.extend({
initialize: function() {
this.users = this.options.users;
this.render();
},
render: function() {
_(this.users).each(function(){
// $('#app').append('here');
});
var template = _.template($('#usersTemplate').text());
$(this.el).html(template({users: this.users}));
$('#app').html(this.el);
}
});
var UserView = Backbone.View.extend({
initialize: function() {
this.user = this.options.user;
this.render();
},
render: function() {
var template = _.template("hello {{user.name}}");
$(this.el).html(template({user: …Run Code Online (Sandbox Code Playgroud) 我的ListClass看起来像这样:
var ListView = Backbone.View.extend({
initialize: function() {
this.render();
},
events: {
'click ul#perpage span': 'setperpage'
},
setperpage: function(event) {
this.collection.perpageurl = '/perpage/' + $(event.target).text();
this.collection.fetch();
this.render();
},
render: function() {
template = _.template('\
<table>\
<% _(collection).each(function(model){%>\
<tr><td><%=model.id%></td><td><%=model.name%></td><td><%=model.email%></td></tr>\
<%}); %>\
</table>\
<ul id="perpage">\
<li><span>5</span></li>\
<li><span>10</span></li>\
</ul>\
');
var context = {collection: this.collection.toJSON()};
$(this.el).html(template(context));
$('#app').html(this.el);
return this;
}
});
Run Code Online (Sandbox Code Playgroud)
出于某种原因,当我第一次访问加载此视图的页面时,会显示5个项目(应该会发生).但是,当我点击"setperpage"事件时<span>10</span>,即使更新了网址然后fetch()被调用,列表也不会更新.(我已经看过萤火虫的请求了,所以我知道我要回到json的10件物品).他们为什么不渲染?我仍然只看到5个项目.
组织观点的好方法是什么?假设我有一个div,它将包含来自用户管理面板视角的视图 - 将会有一个用户列表以及选择一次显示的数量,排序选项,要打开的页面,过滤器,等等...
我想要一个包含除表和数据之外的所有内容的外部视图吗?然后是一个包含表格的内部视图(以及数据)?分页会有它自己的看法吗?分页视图如何使用click事件更新用户视图?我只是对如何组织视图感到困惑,同时仍然可以让不同的事件触发其他视图到render()/集合fetch().
所以基本层次结构如下:
- User View
- Table
- List of Users
- Pagination
- List of available numbers to click
- Filters
- Possible filters to apply to the data
Run Code Online (Sandbox Code Playgroud)
然而,单击分页中的过滤器或数字应该能够将集合转换为fetch()新数据并刷新视图;