Разница между @bind и @ bind-value - PullRequest
0 голосов
/ 03 октября 2019

В чем разница использования @bind и @bind-value?

Я сделал этот простой пример и, протестировав его в браузере, я не увидел никакой разницы.

<p>@@bind @increment1</p>

<input 
    type="text"
    @bind="@increment1"
/>

<p>@@bind-value @increment2</p>
<input 
    type="text"
    @bind-value="@increment2"
/>

@code {
    string increment1;
    string increment2;
}

1 Ответ

1 голос
/ 03 октября 2019

Цитирование Привязка компонентов документы:

Привязка данных к компонентам и элементам DOM выполняется с атрибутом @bind. (...) Использование @bind со свойством CurrentValue (<input @bind="CurrentValue" />) по существу эквивалентно следующему:

<input value="@CurrentValue"
       @onchange="@((ChangeEventArgs __e) => CurrentValue = __e.Value)" />

В дополнение к обработке событий onchange с помощью *Синтаксис 1015 *, свойство или поле можно связать с помощью других событий, указав атрибут @bind-value с параметром события (@bind-value:event). (onchange, oninput)

Суммирование

Если вы хотите сбрасывать связанное значение при каждом изменении входа (вместочтобы настроить все изменения сразу при потере фокуса ввода), вы должны использовать @bind-value и oninput на @bind-value:event:

<input @bind-value="CurrentValue" 
       @bind-value:event="oninput" />

Если вы пытаетесь использовать @bind-value:event без @bind-value (используяпросто @bind) возникает ошибка предварительной компиляции:

ошибка RZ10004: не удалось найти непараметризованный атрибут связывания, соответствующий атрибуту «связывание-значение: событие»

Но сгенерированный файл XXX.razor.g.cs одинаков для @bind и @bind-value.

...