我正在尝试构建一个最初显示文本的视图。如果用户双击,它将用输入字段替换该文本。这样用户可以轻松地更新文本(例如使用“contenteditable”属性)。
我有一种适用于 Ember pre4 的方法,但不适用于 Ember RC1。在 RC1 中,Ember.TextField 不会初始化为父视图的 value 属性。当您双击标签文本时,它会创建一个空输入字段。这里有两个小提琴:
- 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());
}
});