1

私はsproutcoreに非常に慣れていません。SC.InlineEditableミックスインとフィールドについては知っていisEditableますが、問題はボタンをクリックしてlabelView編集可能にするときです。ラベルは同じままで、ラベルをダブルクリックしてテキストを入力する必要があります。

私が望むのは、編集ボタンをクリックすると、ラベルがテキスト フィールドに変わり、最初の応答者になる必要があることです。つまり、テキストフィールドでカーソルが点滅する必要があります。

これを行うためのまともなドキュメント(sproutcoreはあまり役に立ちませんでした)またはチュートリアルを見つけることができませんでした。そのような参照へのリンクも非常に役立ちます。

4

2 に答える 2

1

ショーケースによると、次のようにこれを達成できるはずです。

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 のバージョンと、ブラウザ/バージョンを教えていただけますか? 潜在的なバグである可能性があります。

于 2013-03-14T16:37:40.613 に答える
0

私にとって、ラベルを有効にすることは、アプリケーションでは別の状態であるように感じます。この場合、ボタンのアクションをステートチャートに関連付けるのが最善です。そのため、最初に isEditing プロパティを使用してコントローラーを作成します。これは false (デフォルト) です。

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

次に、ボタンのアクションによって呼び出される関数を現在の状態で作成します。これにより EDITING 状態になり、isEditing プロパティが enterState で true に設定され、exitState で false に設定されます。

ラベル ビューの編集状態をこの isEditing プロパティにバインドする方法はよくわかりませんが、これが可能であると仮定すると、この方法ですべてのフィールドの編集状態を同時に制御できます。編集が完了すると、すべてのフィールドも通常に戻ることを確認してください。

于 2013-03-14T20:13:07.667 に答える