Knockoutjs如何使用三元运算符添加一个必需的属性来输入

Knockoutjs how to add a required attribute using ternary operator to input

理想情况下,我想在我的输入中添加一个三元运算符,以便在选择特定承运商时需要输入,而对于所有其他承运商则可选。到目前为止,这是我尝试过的:

<input class="input-text" type="text" maxlength="60" name="shipper_number"  attr="id: 'shipper_number_' + method.method_code + '_' + method.carrier_code" data-bind="value: checkoutConfig.quoteData.shipper_number,
                    required: method.carrier_title == 'DHL' ? 'required' : ''" /> //This is the one I tried and it didn't work

我尝试将必填字段添加到数据绑定属性,但没有成功。我对淘汰赛知之甚少,所以我什至不知道我是否在正确的轨道上。感谢任何帮助。

您可以使用 attr 绑定。如果 method.carrier_title 是一个 observable,您需要使用 () 来获取值,然后再将其与字符串

进行比较

const viewModel = {
  title: ko.observable('foo'),
  title2: ko.observable('bar')
}

ko.applyBindings(viewModel)
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>
<form>
  Input 1: <input type="text" data-bind='attr:{ required: title() === "foo" }'>
  Input 2: <input type="text" data-bind='attr:{ required: title2() === "notbar"}'>
  <input type="submit">
</form>