小编mjk*_*mjk的帖子

覆盖Enter键的SELECT行为

使用HTML控件(或多或少像电子表格一样操作) - 使用可编辑数据单元矩阵.当涉及从SELECT派生的单元格时,我在选择该类型的单元格进行编辑时遇到问题时会遇到问题:

如果我使用其默认格式(size = 0)呈现Select,则用户将获得Select的Enter-key处理的不正常行为:

  • 1st Enter =>激活单元格上的编辑(显示选择控件)
  • 2nd Enter =>展开选择以显示选项
  • 用户使用up/dn键进行选择
  • 3rd Enter =>关闭列表.(问题:此输入对"keydown"事件处理程序隐藏)
  • 4th Enter =>需要触发事件监听器以停用单元格编辑.

另一方面,如果select被呈现为列表框(例如,size = 3),则Enter键行为正是我正在寻找的(意思是,上面列表中的#2和#3不再是但是因为列表现在显示在控件的内部(而不是弹出窗口),它会炸掉单元格/行大小.

那么,有没有办法"挂钩"上面的第三个Enter-key事件,或者在处理Enter键时改变Select的行为的其他一些相对直接的方式?

注意:我们没有使用任何第三方库(阅读:jQuery,et.al)

编辑:这是事件监听器(通过典型的"addEventListener(...)"附加)

this.e_sKeyDown = function(control, event) {
  switch(event.keyCode) {
    case 13:  // enter
      control.blur()
      break
    case 27:  // esc = reset selection to it previous value
      control.setAttribute("data-cancelModify", "true")
      control.blur()
      break
  }
}
Run Code Online (Sandbox Code Playgroud)

第二次编辑:根据意见/建议,我已经添加/给出了这个尝试:

this.e_sOnChange = function(control, event) {
  control.blur()
}
Run Code Online (Sandbox Code Playgroud)

该事件将触发,但它会触发每个不同的Option/s.换句话说,似乎我没有任何方法可以确定这是用户实际打算选择的选项,还是只是沿途遍历的选项.为了演示,这里是jquery网站的任何示例.注意文本如何随每个向上/向下更改,无论Enter键如何:

http://api.jquery.com/change/

解决:感谢所有评论者的建议.实际上,解决方案(无论如何我的情况)是在混合中添加一个"keyup"事件监听器.我不能说这将适用于哪些浏览器,但它在更高版本的Chrome中可用.

javascript select

8
推荐指数
1
解决办法
2031
查看次数

Scala-如何解决“值不是Nothing的成员”错误

这个示例代码基于Atmosphere类,但是如果有人可以让我对错误的含义有一定的了解,我想我可以找出任何特定于Atmosphere的解决方案...

val bc = BroadcasterFactory.getDefault().lookup(_broadcasterId) 
bc.broadcast(message)
Run Code Online (Sandbox Code Playgroud)

在第一行之后,bc应该包含一个对象的句柄,该对象的类定义包括broadcast()方法-实际上,它包含几个重载的变体。但是,编译器在第二行代码中使以下内容感到窒息:“值广播不是Nothing的成员”

关于什么原因的任何想法/建议?

谢谢。

编辑:[BroadcasterFactor] .lookup的签名:抽象的Broadcaster lookup(对象id)

注意:1)这是我在示例中使用的签名版本,2)它是Java Inteface签名-而getDefault()递归实现该接口的实例化对象。

解决方案:强制类型强制转换为值:

val bc: Broadcaster = BroadcasterFactory.getDefault().lookup(_broadcasterId)
Run Code Online (Sandbox Code Playgroud)

scala compilation atmosphere

5
推荐指数
1
解决办法
7200
查看次数

JADE/SCALATE模板错误 - InvalidSyntaxException

我正在尝试Jade(通过Scalate)并遇到一个我没有找到答案的错误.(或者,至少没有看到.)我使用BlueGriffon模拟了一个表单(自编码HTML以来已经多年了......)并将生成的HTML放入Aarron Powel的HTML-JADE转换器中.这是我的.jade模板文件中的顶部或翻译:

br
form(method ='POST',action ='/ account/create',name ='userAccountDetails')
  | 用户名:
  输入(required ='required',name ='username',type ='text')

等,等等,

尝试运行嵌套的scala应用程序会生成此错误:

org.fusesource.scalate.InvalidSyntaxException:)' expected but"在org.fusesource.scalate.scaml.ScamlParser.parse(ScamlParser.scala:375)在5.19发现在org.fusesource.scalate.jade.JadeCodeGenerator.generate(JadeCodeGenerator.scala:38 )

它似乎不喜欢comman-sperated属性,但我不确定为什么.Aslo,在stacktrace剪辑中,它似乎是在Scaml解析器中,即使该文件具有.jade扩展名.

有人能指出我正确的方向吗?谢谢.

scala scalatra scalate pug

3
推荐指数
1
解决办法
583
查看次数

HTML Canvas规模

我已经开始尝试在Canvas对象上绘图.在过去,我对Canvas的曝光一直围绕着图像处理(NPI),所以我对它的坐标系和转换过程有一定的熟悉.我正在使用屏幕尺寸为30 X 30的测试画布.获得2D上下文的句柄后,我发出一个调用:

ctx.fillRect(0,0,10,10);
Run Code Online (Sandbox Code Playgroud)

在左上角产生一个关于针头大小的黑色规格.要使矩形具有任何大小,请说出大约1/4的画布,需要调整为:

ctx.fillRect(0,0,200,200);
Run Code Online (Sandbox Code Playgroud)

那么,这个帆布的规模是如何缩小的呢?是的,我想我可以将它"缩小"回到类似正常的东西,但我想首先找出造成这种情况的原因.我已经禁止Jquery认为它可能会以某种方式干扰,但这并没有帮助.

有任何想法吗?

更新:

画布沿着以下行添加到dom:

<canvas id='foo_" + self.groupIndex + "' class='hCanvasClassName'>"
Run Code Online (Sandbox Code Playgroud)

CSS将宽度定义为100%,高度由JS代码指定.

html canvas scale

3
推荐指数
1
解决办法
354
查看次数

Scala括号语义

将值附加到MAP时,为什么Scala需要额外的括号块才能使此语句有效?

不编译:

vmap += (item.getName(), item.getString()) // compiler output: "found: String"
Run Code Online (Sandbox Code Playgroud)

但是,这会编译:

vmap += ((item.getName(), item.getString())) // note the second set of enclosures
Run Code Online (Sandbox Code Playgroud)

TIA

编辑:vmap定义为

val vmap = new mutable.HashMap[String, String]()
Run Code Online (Sandbox Code Playgroud)

结语: 在编辑时,有一些帖子详细说明了两种可能的解释,这两种解释似乎都含有真实的元素.哪一个实际上是正确的?我无法肯定地说...我只是一个仍在学习语言的人.话虽这么说,我已经根据一个答案(至少在某种程度上)包含在另一个答案中的感觉改变了答案选择- 所以我选择了更大的图片,因为我认为它会提供更广泛的意义为其他人寻找答案.具有讽刺意味的是,我试图更好地理解如何消除语言的一些细微差别,而我已经意识到的是,有更多的东西比我怀疑的更多.我不是说这是一件坏事 - 事实上(IMO)可以从任何语言中获得灵活和复杂的预期- 但它肯定会让一个人不时地错过黑白组织的世界...

为了得出结论,一些观察结果:
1)所选答案包含一个链接到一个充满Scala脑弯曲的网站(我发现这对于尝试理解语言中的一些上述夸克非常有帮助. ) 强烈推荐.
2)我确实遇到了另一个有趣的转折 - 而单括号(上面的例子)不起作用,改变它如下,它工作得很好......

vmap += ("foo" -> "bar")
Run Code Online (Sandbox Code Playgroud)

这可能与匹配方法/功能签名有关,但这只是我的一个猜测.

scala

3
推荐指数
1
解决办法
1168
查看次数

在 Scala 中使用 trait 作为通用接口

我有一个用于 DAO 目的的伪通用类工厂。操作模型非常简单:
1) 使用特定 DAO 对象“T”类型的知识实例化工厂
2) 然后创建 T 的内部实例
3) 它应该调用T的 trait-contracted 函数
4) 最后, 返回 T 的实例(假设一切顺利)

它看起来像这样:

class DAOFactory[T](implicit m: Manifest[T]) {
   def obj = m.runtimeClass.asInstanceOf[Class[T]]
   def doFoo(): Option[Any] = {
       val dao = obj.asInstanceOf[DAO]     // (A) this line will crash
       println(obj.toString())    // some.object.called.DAOTodo
       // val bar = dao.doSomethingSmart(now)   <--- ALL DAO-derived classes implement this function
       return Some(obj) // error-catching excluded for brevity 
   }
}
Run Code Online (Sandbox Code Playgroud)

它是这样使用的:
val f = new DAOFactory[DAOTodo]
val ShinyNewObject = f.doFoo() // …

generics casting scala traits

0
推荐指数
1
解决办法
1838
查看次数