我如何使用Ember创建数据驱动的文本输入
How can I create data-driven text inputs with Ember?
我正在尝试创建几个输入,这些输入可以立即更新我的Ember Data模型,而不需要提交操作。例如
Person
First Name [Placeholder: Enter first name ]
Last Name [Placeholder: Enter last name ]
City [Placeholder: Enter city ]
我通过在Ember TextField子类组件周围创建包装器组件来解决这个问题,并使其工作,但有两个主要问题:
- 占位符不工作,因为我试图实现他们(见下文)-似乎我可以做到这一点更容易使用TextSupport mixin,但我不知道如何使用它。
- 我不喜欢我向路由发送更改动作的方式,它基本上是这样的:
在顶级组件{{person-view action="modifyPersonInternals"}}
中,我的包装器组件如下:
{{editable-property property="firstName" action="updateFirstName"}}
{{editable-property property="lastName" action="updateLastName"}}
{{editable-property property="city" action="updateCity"}}
当用户编辑firstName
时,TextField组件使用参数(新值)调用editable-property
包装器组件上的updateFirstName
;包装器组件反过来用两个参数(要修改的属性和新值)在路由上调用modifyPersonInternals
。这是有效的,但似乎笨拙/陈旧,不可能是正确的方法,不是吗?
此外,这是我在editable-property.js
中实现占位符的不成功尝试,
hasEmptyProperty: Ember.computed(function() {
return ((this.get('property') === "") || (this.get('property') === null));
})
{{#if hasEmptyProperty}}
<div class="placeholder" {{action "editProperty"}}>{{placeholder}}</div>
{{else}}
<div {{action "editProperty"}}>{{bufferedProperty}}</div>
{{/if}}
我得到一个错误,hasEmptyProperty
没有定义。
如果您将模型传递给组件,为什么不直接将models属性与您的输入关联起来呢?
{{input value=model.firstName}}
这将达到您的目标,但如果您试图不将模型传递给组件,那么最好的方法是在您正在做的时候发送一个操作。
关于hasEmptyProperty
,我将有一个名为hasEmptyProperty
的属性和一个设置它的函数,类似于…
checkEmptyProperty: function() {
var property = this.get('property');
if(property === "" || property === null ) {
this.set('hasEmptyProperty', true);
} else {
this.set('hasEmptyProperty', false);
}.observes('property'),
相关文章:
- 让文本输入幻灯片显示输入时的新文本输入?然后向后滑动
- Sails.js:同时发布文本输入和一个文件
- 来自文本输入null的html javascript变量
- 当没有文本输入聚焦时检测空格键按下
- JS中的按钮和文本输入
- JavaScript:在调用函数的文本输入上按enter键
- jQuery自动完成功能不适用于多个文本输入
- 使用JS从选择和文本输入中捕获值,并将输出返回到HTML
- 如何通过jQuery发送选定的元素和文本输入
- HTML如何根据javascript函数的返回值限制文本输入
- jquery插件或javascript方法自动调整文本输入(而非文本区域)(固定宽度)可变高度的大小
- 在jquery中获取文本输入val始终为空
- HTML文本输入大小
- 文本输入与文本区域
- 角度ui选择标记模糊时丢失文本输入
- 文本输入值中的JavaScript变量
- Angular指令中的最佳实践是将文本输入设置为英尺和英寸的格式
- 如何在不通过模型验证的情况下屏蔽文本输入中输入的字符
- 在文本输入区域中创建双向更新
- 不使用自定义CSS或HTML(使用框架方法)的角度材质文本输入或文本区域标签大小