1

我對sproutcore很新穎。雖然我知道SC.InlineEditable mixin和isEditable字段,但問題在於當我點擊該按鈕來編輯labelView時。標籤保持不變,我必須雙擊標籤才能輸入文字。點擊按鈕製作標籤視圖 - Sproutcore

我想要的是,當我點擊編輯按鈕時,標籤應該變成文本字段,並且應該成爲第一響應者,即光標應該閃爍在textfied上。

我找不到任何像樣的文檔(sproutcore沒有多大幫助)或教程來做到這一點。鏈接到這樣的參考也是非常有用的。

回答

1

按照showcase,你應該能夠做到這一點,如下所示:

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的,什麼瀏覽器/版本?這可能是一個潛在的錯誤。

+0

現在正在發生這種情況。我想單擊一個按鈕而不是點擊標籤來使該字段可編輯。其實頁面上有多個標籤。我想通過點擊一個編輯按鈕來立即編輯它們。 – Rakesh 2013-03-14 17:01:19

+0

好吧,您可以輕鬆點擊一個按鈕並在標籤上調用beginEditing(),但只有其中一個可以設置firstResponder。請查看此鏈接底部的代碼,以獲得一個使用1個標籤視圖執行此操作的粗略示例:https://github.com/sproutcore/showcase/blob/master/views/label_views.js – 2013-03-14 17:10:42

+0

謝謝。我會從那開始。將所有標籤變爲文本字段的指針? – Rakesh 2013-03-14 17:23:04

0

對我來說,感覺就像在應用程序中啓用標籤是一種不同的狀態。在這種情況下,您最好將按鈕的動作綁定到狀態圖。 因此,您首先使用isEditing屬性創建一個控制器,該屬性爲false(默認情況下)。

myApp.myController = SC.Controller.create({ 
    isEditing: false; 
}); 

現在您在當前狀態下創建一個函數,該函數由按鈕上的操作調用。這將導致進入EDITING狀態,該狀態在enterState中將isEditing屬性設置爲true,並在exitState中將其設置爲false。

我不知道如何將標籤視圖的編輯狀態綁定到isEditing屬性,但假設這是可能的,您可以通過這種方式同時控制所有字段的編輯狀態,並且您將確定所有字段在編輯完成後也會恢復正常。