我正在尝试将现有模板从按钮单击转换为带选项的选择。原始模板如下所示:
<!-- ko foreach: {data: amounts, as: 'amount'} -->
<button type="button" data-bind="click: $parent.changeAmount.bind($parent)">
<span data-bind="text: amount.amountFormatted"></span>
</button>
<!-- /ko -->
数组amounts
的内容如下:
[
{
"baseValue":"15",
"value":15,
"amountFormatted":"15,00 €",
"price":"15,00 €"
},
{
"baseValue":"25",
"value":25,
"amountFormatted":"25,00 €",
"price":"25,00 €"
},
{
"baseValue":"50",
"value":50,
"amountFormatted":"50,00 €",
"price":"50,00 €"
}
]
下面是处理函数:
changeAmount: function (amount) {
console.log(amount);
this.activeAmount(amount);
}
console.log
向我展示了按钮单击的返回值是什么样子的:
{
"baseValue":"50",
"value":50,
"amountFormatted":"50,00 €",
"price":"50,00 €"
}
现在,我希望将整个内容显示为选择而不是按钮:
<select data-bind="options: amounts,
optionsText: 'amountFormatted',
optionsValue: 'value',
value: activeAmount,
event:{ change: changeAmount}"></select>
但是在这个模板中,select返回整个视图对象,而不是单击按钮返回的对象。我如何才能让select返回相同的对象/数组呢?
1条答案
按热度按时间raogr8fs1#
您应该只需要将其作为最小工作示例:
1.可观测量带有选项的数组
1.装订如下图:
您还使用了事件绑定,这在您的上下文中可能根本不需要,您将其绑定到父对象,但您不使用
this
,而是还期望传入数量,这与您的单击处理程序定义(您绑定函数的地方,可以,但如果您使用该路径,则不会给出参数)配合得很好。重新处理上下文和单击处理程序,使其访问
activeAmount
,这样您就不需要参数。由于您绑定在父级上,因此只需在内部使用此.activeAmount。注意:如果select bind工作正常,则不需要执行任何操作来更新
activeAmount
。它将已经包含所选选项的formattedAmount文本