Dar*_*han 6 ember.js ember.js-2
我在循环中有一个select元素,我想要触发的动作需要有两个参数:select元素的选定选项和我们循环的项目.我的代码看起来像这样:
{{#each loopItems as |loopItem|}}
<select onChange={{action 'fireThis' loopItem target.value }}>
{{#each loopItem.subItems as |subItem|}}
<option value={{subItem.id}}>{{subItem.value}}</option>
{{/each}}
</select>
{{/each}}
Run Code Online (Sandbox Code Playgroud)
而我的火焰这个动作是这样的:
fireThis:function(loopItem, value){
//Do something here with both.
// like loopItem.set('thisProperty', value);
}
Run Code Online (Sandbox Code Playgroud)
因此,在我的特定情况下,subItems的数量是动态的,我需要将选定的subItem与其当前使用的loopItem一起使用.
除非重构为组件(现在,我不能这样做),如何将多个参数传递给在'onChange'上触发的操作?
我试过了:
<select onChange={{action 'fireThis' value ="loopItem target.value" }}>
<select onChange={{action 'fireThis' value ="loopItem target.value" }}>
<select onChange={{action 'fireThis' loopItem value="target.value"}}>
<select onChange={{action 'fireThis' value="target.value" loopItem}}>
Run Code Online (Sandbox Code Playgroud)
对于上述所有情况,函数中的两个参数都是未定义的(或导致另一个错误).唯一有效的是:
<select onChange={{action 'fireThis' value="target.value"}}>
Run Code Online (Sandbox Code Playgroud)
但这只给了我subItem,而不是loopItem.
不幸的是,loopItems是新创建的Ember对象,没有任何ID参数,所以我不能给每个select元素一个唯一的ID.传递多个参数的能力几乎可以解决我的整个问题.
小智 6
有点晚了,但这里找到的答案有效: 在选择菜单的动作中加入2个参数.
对于OP的解决方案,你可以这样包装它:
<select onChange={{action (action 'fireThis' loopItem) value="target.value"}}>
| 归档时间: |
|
| 查看次数: |
1343 次 |
| 最近记录: |