gpt4 book ai didi

javascript - 在 Ember View 中处理 TextField 子项的模糊

转载 作者:行者123 更新时间:2023-11-30 07:45:00 27 4
gpt4 key购买 nike

作为探索 ember.js 的一种方式,我正在使用 100% 功能兼容的版本重新创建主干待办事项示例应用程序。我遇到的第一个症结是双击编辑创建的待办事项后,如何处理 Ember.TextField 上的模糊事件以退出编辑模式。当前代码如下:

<script type="text/x-handlebars" data-template-name="todo-list-template">
<ul>
{{#each App.TodosController.todos}}
{{#view App.TodoView tagName="li" contentBinding="this"}}
{{#if editMode}}
{{view Ember.TextField valueBinding="content.text"}}
{{else}}
{{content.text}}
{{/if}}
{{/view}}
{{/each}}
</ul>
</script>

App.TodoView = Ember.View.extend({
editMode: false,
doubleClick: function(evt){
this.set('editMode', true);
},
blur: function(evt){
this.set('editMode', false);
}
});

我曾假设来自 Ember.TextField 定义的输入元素的模糊事件会冒泡到我的 View ,但我的 View 上的模糊处理程序似乎从未被调用。

最佳答案

我查看了源代码,我认为您必须使用 TextSupport mixin https://github.com/emberjs/ember.js/blob/master/packages/ember-handlebars/lib/controls/text_support.js#L25-28 中定义的 focusOut 事件

而且 focusOut 事件不会冒泡到 parentView,这就是定义自定义 App.TextField 的原因。

Handlebars :

<script type="text/x-handlebars">
<ul>
{{#each App.TodosController.todos}}
{{#view App.TodoView tagName="li" contentBinding="this"}}
{{#if view.editMode}}
{{view App.TextField editModeBinding="view.editMode" valueBinding="view.content.text"}}
{{else}}
{{view.content.text}}
{{/if}}
{{/view}}
{{/each}}
</ul>
</script>​

JS:

App.TextField = Ember.TextField.extend({
didInsertElement: function(){
this.$().focus();
},

focusOut: function(evt) {
this.set('editMode', false);
}
});

App.TodoView = Ember.View.extend({
editMode: false,
doubleClick: function(evt) {
this.set('editMode', true);
}
});

请参阅 http://jsfiddle.net/cvWWe/34/ 中的工作示例

关于javascript - 在 Ember View 中处理 TextField 子项的模糊,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8646238/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com