javascript - 新 Ember 组件中输入助手的最佳实践

标签 javascript ember.js data-binding handlebars.js

我目前正在学习 Ember 的新组件数据向下、 Action 向上范例。正如所讨论的here但是,有时我想允许子组件显式修改属性。这就是 mut 助手的用武之地:它为传入的值创建一个包装器,包含一个(只读?)值和一个更新它的函数。该页面上的示例是一个简单的按钮,它会增加一个计数器。

如果我在组件内使用输入助手,这个概念如何运作?例如,假设我正在构建一个由一堆特殊表单组件组成的表单:

// templates/index.hbs
<form>
    {{form-control value=(mut model.firstValue)}}
    {{form-control value=(mut model.secondValue)}}
</form>

如果form-control组件只是负责包装输入控件的任务,那么我们如何正确使用传入的mut对象呢?是不是有点像?

// templates/components/form-control.hbs
{{input type="text" value=attrs.value.value input=attrs.value.update}}

我的想法是:输入元素的值设置为 mut 对象的值,每当输入值发生变化(HTML5 输入事件)时,mut 的更新方法 对象被调用以将模型属性设置为新值。不过,我的想法似乎有问题,因为这是行不通的。现在这样做的“标准”方法是什么?我正在使用 Ember 1.13.8。

最佳答案

在经典组件中(与 glimmer 组件相反),所有绑定(bind)都是可变的,因此通常不需要使用 mut 帮助程序。以下应该可以正常工作:

// templates/index.hbs
<form>
  {{form-control value=model.firstValue}}
  {{form-control value=model.secondValue}}
</form>

// templates/components/form-control.hbs
{{input type="text" value=value}}

mut 助手和 attrs 的预期用途是用于 glimmer 组件,也称为尖括号组件,目前尚未在 Ember.js 的稳定版中发布发布。

关于javascript - 新 Ember 组件中输入助手的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32873931/

相关文章:

javascript - 何时在 Chrome/Web 扩展中断开 MutationObserver 的连接?

javascript - 使用 Javascript 触发电话调用

javascript - 提交后退回。

ember.js - Ember 查询参数未设置查询参数

javascript - 使用 ember.js 添加和删除记录

wpf - 如何为带有确定/取消按钮的数据绑定(bind) WPF 对话框设计支持数据类型?

JavaScript 多个条件?

javascript - 如何从 Angularjs 应用程序中的表中获取特定单元格数据

ember.js - Ember 数据剩余适配器错误处理不起作用

WPF - 当绑定(bind)不在字符串中时附加绑定(bind)调试