Javascript 单击按钮使labelview可编辑-Sproutcore
我对sproutcore很陌生。虽然我知道Javascript 单击按钮使labelview可编辑-Sproutcore,javascript,javascript-framework,sproutcore,textfield,sproutcore-views,Javascript,Javascript Framework,Sproutcore,Textfield,Sproutcore Views,我对sproutcore很陌生。虽然我知道SC.InlineEditablemixin和isEditable字段,但问题是当我单击按钮使labelView可编辑时。标签保持不变,我必须双击标签才能输入文本 我想要的是,当我点击编辑按钮时,标签应该变成一个文本字段,并且应该成为第一个响应者,即光标应该在文本上闪烁 我找不到任何像样的文档(sproutcore帮助不大)或教程来做这件事。这些参考资料的链接也会非常有用 根据,您应该能够完成以下任务: SC.LabelView.extend({ c
SC.InlineEditable
mixin和isEditable
字段,但问题是当我单击按钮使labelView
可编辑时。标签保持不变,我必须双击标签才能输入文本
我想要的是,当我点击编辑按钮时,标签应该变成一个文本字段,并且应该成为第一个响应者,即光标应该在文本上闪烁
我找不到任何像样的文档(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,以及什么浏览器/版本吗?这可能是一个潜在的bug。根据,您应该能够通过以下方式完成此任务:
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,以及什么浏览器/版本吗?这可能是一个潜在的bug。对我来说,在应用程序中启用标签是一种不同的状态。在这种情况下,最好将按钮的操作绑定到状态图。 因此,首先使用isEditing属性创建一个控制器,该属性为false(默认情况下) 现在在当前状态下创建一个函数,该函数由按钮上的操作调用。这将导致进入编辑状态,即在enterState中将IsEdit属性设置为true,在exitState中将IsEdit属性设置为false
我不知道如何将label视图的编辑状态绑定到此isEditing属性,但假设这是可能的,您可以通过这种方式同时控制所有字段的编辑状态,而且您肯定知道,编辑完成后,所有字段也将恢复正常状态。对我来说,在应用程序中启用标签是一种不同的状态。在这种情况下,最好将按钮的操作绑定到状态图。 因此,首先使用isEditing属性创建一个控制器,该属性为false(默认情况下) 现在在当前状态下创建一个函数,该函数由按钮上的操作调用。这将导致进入编辑状态,即在enterState中将IsEdit属性设置为true,在exitState中将IsEdit属性设置为false
我不知道如何将label视图的编辑状态绑定到此isEditing属性,但假设这是可能的,您可以通过这种方式同时控制所有字段的编辑状态,编辑完成后,您肯定会知道所有字段也将恢复正常。这正在发生。我想点击一个按钮,而不是点击标签,使该字段可编辑。实际上,页面上有多个标签。我想在单击“编辑”按钮时立即对所有标签进行编辑。您可以轻松单击一个按钮并使其在标签上调用BeginEdit(),但其中只有一个可以设置firstResponder。查看此链接底部的代码,了解使用1标签视图执行此操作的大致示例:谢谢。我从那开始。任何关于将所有标签转换为文本字段的指针?如果对标签调用BeginEdit(),它将自动转换为文本字段。您只需要迭代所有这些方法并调用该方法。如果它们都包含在同一父视图中,您可以使用父视图的
.childview
属性,并快速检查SC.kindOf(view,SC.LabelView)
是否返回true(我认为这是正确的语法)。现在正在发生这种情况。我想点击一个按钮,而不是点击标签,使该字段可编辑。实际上,页面上有多个标签。我想在单击“编辑”按钮时立即对所有标签进行编辑。您可以轻松单击一个按钮并使其在标签上调用BeginEdit(),但其中只有一个可以设置firstResponder。查看此链接底部的代码,了解使用1标签视图执行此操作的大致示例:谢谢。我从那开始。任何关于将所有标签转换为文本字段的指针?如果对标签调用BeginEdit(),它将自动转换为文本字段。您只需要迭代所有这些方法并调用该方法。如果它们都包含在同一父视图中,您可以使用父视图的.childview
属性,并快速检查SC.kindOf(view,SC.LabelView)
是否返回true(我认为这是正确的语法)。