出于某种原因,无论如何,pageNumber最终成为loopCounter循环中的最后一个值.现在我明白如果我在闭包本身直接使用loopCounter,但我不是.从下面的代码中可以看出,我在闭包中创建了一个新变量来获取loopCounter的当前值.
我只能想到的是(假设javascript将所有内容都视为引用类型)pageNumber正在引用loopCounter,所以无论我创建一个新的pageNumber有多少次,它总是指向loopCounter对象.因此,loopCounter最终得到的值将是任何pageNumber将指向的值.
我如何让它不指向loopCounter但是每次迭代创建一个新的pageNumber,它保存当前的loopCounter值?
for (var loopCounter = result.StartingPoint; loopCounter <= result.HighestPageCount; loopCounter++)
{
...
var newDiv = document.createElement('div');
...
//trying to remove the reference to loopCounter
var pageNumber = loopCounter;
newDiv.onclick =
function(event)
{ //Right here ---V
getResultUsingUrl(result.PagerPreLink + "&pageNumber=" + pageNumber);
};
...
}
Run Code Online (Sandbox Code Playgroud)
解
感谢以下几个答案:
function createClickMethod(loopCounter, link)
{
var pageNumber = loopCounter;
return function(event) { getResultUsingUrl(link + "&pageNumber=" + pageNumber); };
}
Run Code Online (Sandbox Code Playgroud)
我可以像这样打电话:
newDiv.onclick = createClickMethod(loopCounter, result.PagerPreLink);
Run Code Online (Sandbox Code Playgroud)
或者,如果我想使用jQuery ...建议如下:
jQuery(newDiv).click
(
createClickMethod(loopCounter, result.PagerPreLink)
);
Run Code Online (Sandbox Code Playgroud) 我的JVM崩溃了,并且hs_err文件显示它在尝试加载类时崩溃了.特别是在尝试memcpy时([libc.so.6 + 0x6aa2c] memcpy + 0x1c).我查看了.class文件,并确定了正在加载的类.
但是,任何人都可以告诉我是什么原因造成的,或者我如何能够更多地了解原因?如果JVM内存不足则不会引发错误.非常感谢任何见解.
我已经从我的hs_err文件中摘录了一段摘录.
#
# An unexpected error has been detected by Java Runtime Environment:
#
# SIGBUS (0x7) at pc=0x005aba2c, pid=20841, tid=2427227056
#
# Java VM: Java HotSpot(TM) Client VM (1.6.0_02-b05 mixed mode)
# Problematic frame:
# C [libc.so.6+0x6aa2c] memcpy+0x1c
#
# If you would like to submit a bug report, please visit:
# http://java.sun.com/webapps/bugreport/crash.jsp
#
--------------- T H R E A D ---------------
Current thread (0x90d0dc00): JavaThread "ORDERHANDLER" [_thread_in_native, id=20881]
siginfo:si_signo=7, si_errno=0, si_code=2, …Run Code Online (Sandbox Code Playgroud) 我正在通过将按钮拖动到界面构建器中的视图来调用对象中的操作方法.然后我将一个对象拖到面板上,并使用action方法指定我的对象.我将我的按钮拖动到对象并选择我的操作方法.这适用于调用我的方法.
我想在没有uiview类的接口构建器的情况下调用我的action方法,而当前的nib是从uiview类派生的.
有谁知道我怎么能做到这一点?
有一个表messages包含如下所示的数据:
Id Name Other_Columns
-------------------------
1 A A_data_1
2 A A_data_2
3 A A_data_3
4 B B_data_1
5 B B_data_2
6 C C_data_1
Run Code Online (Sandbox Code Playgroud)
如果我运行查询select * from messages group by name,我会得到如下结果:
1 A A_data_1
4 B B_data_1
6 C C_data_1
Run Code Online (Sandbox Code Playgroud)
什么查询将返回以下结果?
3 A A_data_3
5 B B_data_2
6 C C_data_1
Run Code Online (Sandbox Code Playgroud)
也就是说,应返回每组中的最后一条记录.
目前,这是我使用的查询:
SELECT
*
FROM (SELECT
*
FROM messages
ORDER BY id DESC) AS x
GROUP BY name
Run Code Online (Sandbox Code Playgroud)
但这看起来非常低效.还有其他方法可以达到相同的效果吗?
我成功地对我的一个struts2映射文件使用了重定向操作,如下所示:
<action name="setAsCurrentCart" class="com.fmp.MyAction">
<result name="success" type="redirect-action">
<param name="actionName">myOtherAction</param>
<param name="foo">${foo}</param>
</result>
<interceptor-ref name="defaultComponentStack"/>
</action>
Run Code Online (Sandbox Code Playgroud)
这是我想做的事情:
<action name="setAsCurrentCart" class="com.fmp.MyAction">
<result name="success" type="redirect-action">
<param name="actionName">myOtherAction</param>
<param name="${dynamicParameterName}">${dynamicParameterValue}</param>
</result>
<interceptor-ref name="defaultComponentStack"/>
</action>
Run Code Online (Sandbox Code Playgroud)
换句话说,我希望我传递的参数的名称是动态的.有谁知道这是否可能?
我似乎无法belongs_to使用accepts_nested_attributes_forRails 2.3 的新工具在rails视图中生成嵌套表单以获取关系.我确实检查了许多可用的资源,看起来我的代码应该正常工作,但是fields_for爆炸对我来说,我怀疑它与我如何配置嵌套模型有关.
我遇到的错误是一个常见的错误,可能有很多原因:
'@account[owner]' is not allowed as an instance variable name
Run Code Online (Sandbox Code Playgroud)
以下是涉及的两个模型:
class Account < ActiveRecord::Base
# Relationships
belongs_to :owner, :class_name => 'User', :foreign_key => 'owner_id'
accepts_nested_attributes_for :owner
has_many :users
end
class User < ActiveRecord::Base
belongs_to :account
end
Run Code Online (Sandbox Code Playgroud)
也许这就是我在做'rong'的地方,因为帐户可以拥有'所有者',可能是'用户',但用户只有一个'帐户',基于用户模型account_id键.
这是new.html.haml中的视图代码,它炸毁了我:
- form_for :account, :url => account_path do |account|
= account.text_field :name
- account.fields_for :owner do |owner|
= owner.text_field :name
Run Code Online (Sandbox Code Playgroud)
这是新操作的控制器代码:
class AccountsController < ApplicationController
# GET /account/new
def new
@account …Run Code Online (Sandbox Code Playgroud) 我想生成随机字符串,如:
sssder
tvmwww
66rfdd
123123
oo007oo
1234
2020
1111
rrrr
r8r8r
uiuiu
wewewe
fefefe
abced
xyz..
Run Code Online (Sandbox Code Playgroud)
具体来说,我想要一个长度为5到8个字符的字符串,很容易记住.这可能吗?
我需要在vim中执行逻辑和两个autocmd事件.基本上,当FileType为tex时,该命令必须在InsertLeave上运行.看起来这应该工作(在.vimrc中):
autocmd FileType tex :autocmd InsertLeave :w
Run Code Online (Sandbox Code Playgroud)
但事实并非如此.嵌套选项似乎也没有帮助,即使手册指出它应该.
它易于做逻辑或:
autocmd BufEnter,BufLeave ...
Run Code Online (Sandbox Code Playgroud)
做逻辑AND一定不是太难.
我想知道在执行该函数之后是否有一种方法可以查看非声明变量的值,因为它们被传递到函数中.例如,如果我正在调试和行
foo.setBar(baz.getBar());
Run Code Online (Sandbox Code Playgroud)
已经通过(但仍然在范围内),我怎样才能看到传入的值的值setBar()?我知道我可以通过许多其他方式看到这一点,例如通过踩入setBar()调用,或者通过分配baz.getBar()一个临时变量 - 但这不是我要问的.
编辑:基本上,我在调试时感到受到惩罚(通过失去查看某些信息的能力),因为我没有声明每个变量.
并且,我知道我可以bar在事后检查(如果我知道它没有改变)但在这种情况下它不是那么简单,因为我正在处理不仅仅是POJO或JavaBeans的对象(带来这个问题的对象) up是一个HTTP请求 - 是的,我已经尝试过检查它了.
对于我将要与用户帐户进行交互的操作,我想创建一个"TheUser"对象,除了在调用我的控制器上的任何操作时将该对象添加到"ViewData ["TheUser"]".
如果用户已登录,它将从数据库中获取用户的信息,否则,"TheUser"对象将为空.
我尝试在控制器构造函数中访问"User.Identity.Name",但是在调用任何操作之前不会创建它.
我正在查看自定义授权过滤器,但那些不允许我创建"TheUser"对象并将其存储在ViewData中.
这是我想要完成的一个简短的片段:
[Authorize]
public class HomeController : Controller
{
User TheUser;
public HomeController()
{
TheUser = User.Identity.IsAuthenticated ? UserRepository.GetUser(User.Identity.Name) : null;
ViewData["TheUser"] = TheUser;
}
}
Run Code Online (Sandbox Code Playgroud) java ×3
algorithm ×1
asp.net-mvc ×1
associations ×1
autocmd ×1
c# ×1
closures ×1
cocoa-touch ×1
debugging ×1
eclipse ×1
group-by ×1
iphone ×1
javascript ×1
jvm ×1
jvm-crash ×1
mysql ×1
objective-c ×1
php ×1
redirect ×1
ruby ×1
sql ×1
struts2 ×1
url ×1
vim ×1