我使用Ember-power-select-with-create在我的下拉菜单中进行自定义选择。
这是.hbs文件中的电源选择部分。
{{#power-select-multiple-with-create
options=options //array for prefill values
selected=offer.offer //is where we save it to (offer is the model and has an array named offer)
onchange=(action (mut offer.offer)) //default onchange for prefill options
onfocus=(action "handleFocus")
onblur=(action "handleBlur")
oncreate=(action "createOffer" offer.offer) //This calls "createOffer"
buildSuggestion=suggestion
as |offer|}}
{{offer}}
{{/power-select-multiple-with-create}}
" createOffer"我的.js文件中的函数如下所示:
它传递了两个值:selected是offer.offer和searchText,它是用户试图添加的输入。
createOffer(selected, searchText)
{
if (selected == null)
{
selected = []; //This is what I'm currently trying: if its null initialize it
}
if (selected.includes(searchText)) { //Don't add if it's already added
this.get('notify').alert("Already added!", { closeAfter: 4000 });
}
else { // if it's not yet added push it to the array
selected.pushObject(searchText);
}
}
此代码非常适用于添加我们预定义的自定义选项,但如果它是我们尝试添加到新组优惠中的第一个和自定义商品,则无效。
我假设它与数组尚未初始化的事实有关。指向由于数组未被初始化而导致这一事实的指针是我得到一条错误消息:不能在undefined上调用pushObject。我假设它与预定值一起工作的原因是ember-power-select可能在某处初始化它,但我找不到任何关于它的文档。
感谢您的回答!
答案 0 :(得分:2)
如果有人偶然发现这个,那就是解决方案 在我们创建商品然后初始化商品数据时调用它:
offer.set('offer', []);