我对sproutcore很陌生。虽然我知道SC.InlineEditable
mixin 和isEditable
字段,但问题是当我单击按钮进行labelView
可编辑时。标签保持不变,我必须双击标签才能输入文本。
我想要的是当我点击编辑按钮时,标签应该变成一个文本字段并且应该成为第一响应者,即光标应该在 textfied 上闪烁。
我找不到任何像样的文档(sproutcore 没有多大帮助)或教程来做到这一点。指向此类参考的链接也将非常有帮助。
我对sproutcore很陌生。虽然我知道SC.InlineEditable
mixin 和isEditable
字段,但问题是当我单击按钮进行labelView
可编辑时。标签保持不变,我必须双击标签才能输入文本。
我想要的是当我点击编辑按钮时,标签应该变成一个文本字段并且应该成为第一响应者,即光标应该在 textfied 上闪烁。
我找不到任何像样的文档(sproutcore 没有多大帮助)或教程来做到这一点。指向此类参考的链接也将非常有帮助。
根据陈列柜,您应该能够按以下方式完成此操作:
SC.LabelView.extend({
classNames: ['my-label-view'],
isEditable: true,
layout: { width: 300, height: 16, centerX: 0, centerY: 0 },
value: 'Double-click this label to edit inline.'
})
如果这不起作用,您能告诉我们您使用的是什么版本的 SC,以及什么浏览器/版本吗?这可能是一个潜在的错误。
对我来说,启用标签感觉就像是应用程序中的不同状态。在这种情况下,您最好将按钮的操作与状态图联系起来。因此,您首先创建一个带有 isEditing 属性的控制器,该属性为 false(默认情况下)。
myApp.myController = SC.Controller.create({
isEditing: false;
});
现在您在当前状态下创建一个函数,该函数由按钮上的操作调用。这将导致进入 EDITING 状态,在 enterState 中将 isEditing 属性设置为 true,在 exitState 中设置为 false。
我不知道如何将标签视图的编辑状态绑定到这个 isEditing 属性,但是假设这是可能的,您可以通过这种方式同时控制所有字段的编辑状态,并且您将确定编辑完成后所有字段也将恢复正常。