最初にテキストを表示するビューを作成しようとしています。ユーザーがダブルクリックすると、そのテキストが入力フィールドに置き換えられます。このようにして、ユーザーはテキストを簡単に更新できます(「contenteditable」属性を使用するなど)。
私はEmberpre4で機能するアプローチを持っていますが、EmberRC1では機能しません。RC1では、Ember.TextFieldは親ビューのvalueプロパティに初期化されません。ラベルテキストをダブルクリックすると、空の入力フィールドが作成されます。ここに2つのフィドルがあります:
- Pre4(動作中):http://jsfiddle.net/mattsonic/cq5yy/5
- RC1(同じコード-機能しない):http://jsfiddle.net/mattsonic/UUac9/15
Ember内で何が変わったのか考えてみてください。ありがとう。
コードは次のとおりです。
App.InputView = Ember.TextField.extend({
classNames: ["input-small"],
valueBinding: "parentView.value",
didInsertElement: function () {
this.$().focus()
},
focusOut: function () {
parent = this.get("parentView");
parent.setLabelView();
}
});
App.LabelView = Ember.View.extend({
tagName: "span",
template: Ember.Handlebars.compile("{{view.value}}"),
valueBinding: "parentView.value",
doubleClick: function () {
parent = this.get("parentView");
parent.setInputView();
}
});
App.LabelEditView = Ember.ContainerView.extend({
tagName: "span",
labelView: App.LabelView.extend(),
inputView: App.InputView.extend(),
didInsertElement: function () {
this.setLabelView();
},
setInputView: function () {
this.set("currentView", this.get("inputView").create());
},
setLabelView: function () {
this.set("currentView", this.get("labelView").create());
}
});