使用HTML控件(或多或少像电子表格一样操作) - 使用可编辑数据单元矩阵.当涉及从SELECT派生的单元格时,我在选择该类型的单元格进行编辑时遇到问题时会遇到问题:
如果我使用其默认格式(size = 0)呈现Select,则用户将获得Select的Enter-key处理的不正常行为:
另一方面,如果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键如何:
解决:感谢所有评论者的建议.实际上,解决方案(无论如何我的情况)是在混合中添加一个"keyup"事件监听器.我不能说这将适用于哪些浏览器,但它在更高版本的Chrome中可用.
这个示例代码基于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) 我正在尝试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扩展名.
有人能指出我正确的方向吗?谢谢.
我已经开始尝试在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代码指定.
将值附加到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)
这可能与匹配方法/功能签名有关,但这只是我的一个猜测.
我有一个用于 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() // …
scala ×4
atmosphere ×1
canvas ×1
casting ×1
compilation ×1
generics ×1
html ×1
javascript ×1
pug ×1
scalate ×1
scalatra ×1
scale ×1
select ×1
traits ×1