有人可以解释一下,为什么事件处理程序的执行顺序有所不同,具体取决于它们的附加方式?在下面的示例中,我使用.on()和.addEventListener()方法处理不同DOM元素上的特定事件.
jsfiddle:http://jsfiddle.net/etsS2/
我认为在这个特定的例子中,事件处理程序的执行顺序取决于event-bubbling- 所以从原始事件开始target并向上移动到document元素.
document.getElementById('outer').addEventListener('mouseup', function (event) {
//$('#outer').on('mouseup', function (event) {
alert('This alert should not show up!');
}, false);
Run Code Online (Sandbox Code Playgroud)
如果我取消注释on();版本,一切都按预期工作 - jQuery处理事件的方式是否与普通相反JavaScript?
我决定在我们的一个应用程序中实现缓存外观 - 目的是最终减少网络开销并限制db命中量.我们正在使用Castle.Windsor我们IoC Container,我们决定Interceptors使用System.Runtime.Caching命名空间在我们的服务层之上添加缓存功能.
在这一刻,我无法弄清楚什么是构建它的最佳方法cache key.目标是区分不同的方法,并且还包括传递的参数值 - 这意味着这两个方法调用应该缓存在两个不同的键下:
IEnumerable<MyObject> GetMyObjectByParam(56); // key1
IEnumerable<MyObject> GetMyObjectByParam(23); // key2
Run Code Online (Sandbox Code Playgroud)
现在我可以看到两种可能的实现:
选项1: 装配| 班级| 方法返回类型| 方法名称| 参数类型| 参数哈希码
"MyAssembly.MyClass IEnumerable<MyObject> GetMyObjectByParam(long) { 56 }";
Run Code Online (Sandbox Code Playgroud)
选项2: MD5或SHA-256基于方法的完全限定名称和传递的参数值计算散列
string key = new SHA256Managed().ComputeHash(name + args).ToString();
Run Code Online (Sandbox Code Playgroud)
我正在考虑第一个选项,因为第二个选项需要更多的处理时间 - 另一方面,第二个选项强制执行所有生成的键的完全相同的"长度".
假设第一个选项将为使用复杂参数类型的方法生成唯一键是否安全?或者也许有一种完全不同的做法?
帮助和意见将受到高度赞赏!
我在SqlNamedQuery属性中遇到了一些问题,该属性已添加到Castle的ActiveRecord的较新版本中。我已经这样指定了:
[assembly: SqlNamedQuery(Queries.GetItemName, "EXEC [dbo].[GetItemName] :id")]
Run Code Online (Sandbox Code Playgroud)
除此之外,我在结果映射中有一个属性声明为:
...
[Property(Access = PropertyAccess.AutomaticProperty, NotNull = true)]
public virtual bool IsPrimaryName { get; set; }
...
Run Code Online (Sandbox Code Playgroud)
Nhibernate查询:
IQuery query = Session.GetNamedQuery(Queries.GetItemName);
query.SetParameter("id", 1212, NHibernateUtil.Int64);
query.SetResultTransformer(Transformers.AliasToBean<Mapping>());
Run Code Online (Sandbox Code Playgroud)
执行后,我收到以下异常:
Object of type 'System.Int32' cannot be converted to type 'System.Boolean'.
Run Code Online (Sandbox Code Playgroud)
我还添加了以下web.config条目,但没有成功(可能仅适用于hql查询)。
<add key="query.substitutions" value="true 1, false 0, yes 'Y', no 'N'" />
Run Code Online (Sandbox Code Playgroud)
所以,我的问题是-我该如何解决这个问题?存储过程返回0或1,但我也尝试过使用“ 1”,“ true”,“ TRUE”等。如何解决此问题?或者,也许我应该删除SqlNamedQueries?
更新:堆栈跟踪
[ArgumentException: Object of type 'System.Int32' cannot be converted to type 'System.Boolean'.]
System.RuntimeType.TryChangeType(Object value, Binder binder, CultureInfo culture, Boolean needsSpecialCast) +4070954 …Run Code Online (Sandbox Code Playgroud)