我正在使用enyojs 2.4和月光石库。
“无法在冻结模式下发现”是什么意思?
我有两个输入:
{kind: "moon.InputDecorator", name: "emaildec", spotlight: true, defaultSpotlightLeft : "emaildec", components: [
{kind: "moon.Input", name: "username",placeholder: "e-mail address", onchange: "nameChanged", value:"",classes: "input-style"} //,spotlight: true
]
},
{tag: "br"},
{kind: "moon.InputDecorator", name: "pwddec" , spotlight: true, defaultSpotlightLeft : "pwddec", components: [
{kind: "moon.Input", name: "userpwd",type:"password", placeholder: "ameba password", onchange: "passwordChanged", value: "",classes: "input-style"} //,spotlight: true
]
}
当我尝试将注意力设置在密码输入上时,抛出此控制台错误:
enyo.Spotlight.spot(this.$.userpwd);
我想要发生的是:
答案 0 :(得分:3)
moon.InputDecorator会在模糊事件(来自moon.Input)时自动解冻Spotlight,然后你可以调用enyo.Spotlight.spot()。 moon.Input在检测到按下Enter键时会自动模糊,但仅当月亮上的dismissOnEnter
标志设置为true
时才会自动模糊。听起来你可能实际上想要将焦点调用到所需的月亮。输入(而不是发现,因为它只会在月亮上显示Spotlight悬停状态.InputDecorator而不是实际发现它),类似这样的事情({{3} }):
enyo.create({
handlers: {
onblur: 'blurHandler'
},
components: [{
kind: "moon.InputDecorator",
name: "emaildec",
spotlight: true,
defaultSpotlightLeft: "emaildec",
components: [{
kind: "moon.Input",
name: "username",
placeholder: "e-mail address",
onchange: "nameChanged",
value: "",
classes: "input-style",
dismissOnEnter: true,
} //,spotlight: true
]
}, {
tag: "br"
}, {
kind: "moon.InputDecorator",
name: "pwddec",
spotlight: true,
defaultSpotlightLeft: "pwddec",
components: [{
kind: "moon.Input",
name: "userpwd",
type: "password",
placeholder: "ameba password",
onchange: "passwordChanged",
value: "",
classes: "input-style"
} //,spotlight: true
]
}],
blurHandler: function (sender, event) {
if (event.originator === this.$.username) {
this.$.userpwd.focus();
}
}
}).renderInto(document.body);
答案 1 :(得分:1)
我并不完全确定“为什么”,但是看一下Spotlight来源,看起来当控件被发现时,冻结模式就会打开。现在,我猜它应该在你试图找到一个新的时候关闭,但它不会这样做。
您可以尝试:enyo.Spotlight.unfreeze();
然后在第二个控件上设置斑点,但我没有测试它以查看是否存在意外的副作用。
答案 2 :(得分:0)
根据enyo论坛上的@dmikeyanderson:
这意味着聚光灯已在控件上冻结,直到 解冻聚光灯不能移动。似乎没有任何错误 使用您的组件,您还有更多代码要分享吗?
根据enyo论坛上的@aarontam:
Hi @ Fabii23,moon.InputDecorator将自动解冻 聚焦模糊事件(来自moon.Input),然后你可以 致电
enyo.Spotlight.spot()
。 moon.Input会自动模糊 当它检测到按下Enter键时,但仅限于 在moon.Input上将dismissOnEnter标志设置为true。听起来像你 可能实际上想要将焦点调用到所需的moon.Input(相反 发现,因为它只会显示Spotlight悬停状态 月亮.InputDecorator并没有真正发现它),就像这样 (基于@ dmikeyanderson的小提琴)