【发布时间】:2019-05-22 09:34:18
【问题描述】:
我目前正在使用出色的ember-power-select 插件作为ember-bootstrap form 的一部分。
我在表单上有多个下拉项目,我正在尝试将它们的处理方式统一到一个函数中,该函数可用作 power-select 调用中的 onChange 操作:
{{#form.element
controlType="power-select"
label="Destination"
value=destinationSelection
options=destinationOptions
as |el|}}
{{#el.control
onChange=(action "setDropDown")
searchField="name"
as |item|}}
{{item.name}}
{{/el.control}}
{{/form.element}}
我的处理函数将根据下拉列表的选择简单地设置一些值:
actions: {
setDropDown(selected, string) {
handleDropDown(selected, dropdown, this)
}
}
function handleDropDown(selected, dropdown, controller) {
let selection = `${dropdown}Selection`
let modelid = `model.${dropdown}_id`
set(controller, selection, selected)
set(controller, modelid, selected.id)
}
为了让它工作,我真的需要能够从组件调用的onChange 部分将字符串传递给setDropDown 操作,否则我无法告诉处理函数它是哪个特定字段应该在不为每个下拉菜单创建操作的情况下进行设置。
但是,当我尝试传入多个参数时,例如
onChange=(action "setDropDown" "destination")
或
onChange=(action "setDropDown" selected "destination")
我失去了将所选项目作为第一个参数的 onChange 操作的基本功能。
我查看了文档,找不到库作者将多个参数传递给 onChange 操作的任何示例,我想知道是否可以在不破坏库功能的情况下实现。
【问题讨论】:
-
有什么理由不使用 Ember Bootstraps
bs-form组件的model/property方法?在这种情况下,您根本不需要onChange操作。 -
@jelhan 很好且有效的问题,简单的答案是当在
{{#form.element}}组件中使用ember-power-select时,我无法真正看到代码块的外观。我真正想要摆脱这些菜单的只是让我的model.propertyName_id成为下拉列表中所选对象的id属性。
标签: ember.js