1 回答

TA貢獻(xiàn)2019條經(jīng)驗(yàn) 獲得超9個(gè)贊
注意:在元素中選擇某些文本后,將觸發(fā) onselect 事件。它與選擇元素或選項(xiàng)選擇無關(guān)...據(jù)我記得,InputSelect 有一些問題,但 Blazor 團(tuán)隊(duì)可能已經(jīng)解決了這些問題。
以下代碼片段描述了如何在 Blazor 中使用 select 元素,以及如何實(shí)現(xiàn)雙向數(shù)據(jù)綁定;即從變量到元素,以及從元素到變量。您可以通過多種方式做到這一點(diǎn):根據(jù)大師史蒂夫·安德森的說法,我的代碼采用了最有效的方式來實(shí)現(xiàn)這一目標(biāo)。
下面的代碼片段使用雙向數(shù)據(jù)綁定將 SelectedAuthorID 變量綁定到 select 元素。
<select @bind="@SelectedAuthorID">
<option value=@(0)></option>
@foreach (var author in authors)
{
<option value="@author.ID">@author.Name</option>
}
</select>
注意:SelectedAuthorID 是一個(gè)定義支持私有變量的屬性:
int _selectedAuthorID;
private int SelectedAuthorID
{
get => _selectedAuthorID;
set
{
if (_selectedAuthorID != value)
{
_selectedAuthorID = value;
}
}
}
嗯,這段代碼是非常不言自明的,但是如果您不完全理解我所做的事情,請(qǐng)隨時(shí)詢問。
上面 foreach 循環(huán)中的authors 對(duì)象是您可以按如下方式創(chuàng)建的作者列表:
@code {
List<Author> authors= Enumerable.Range(1, 10).Select(i => new Author { ID
= i, Name = $"Author {i.ToString()}" }).ToList();
public class Author
{
public int ID { get; set; }
public string Name { get; set; }
}
}
現(xiàn)在,讓我們嘗試在 value="@availableLayouts.GetValue(1)"表達(dá)式之后對(duì)我的選項(xiàng)進(jìn)行建模。該表達(dá)式被計(jì)算為字符串文字,對(duì)吧?當(dāng)用戶選擇此選項(xiàng)時(shí),將調(diào)用 OnSelectStock 來執(zhí)行某些操作。
假設(shè)我們要調(diào)用 OnSelectStock 方法,并在選擇作者時(shí)將作者 id 傳遞給它,而他的 id 是偶數(shù)。因此我們可以這樣做:
if (_selectedAuthorID != value)
{
_selectedAuthorID = value;
if(value % 2 == 0)
{
OnSelectStock( value );
}
}
就是這個(gè)。
希望這可以幫助...
完整的工作代碼:
索引剃刀
@page "/"
<select @bind="@SelectedAuthorID">
<option value=@(0)></option>
@foreach (var author in authors)
{
<option value="@author.ID">@author.Name</option>
}
</select>
<p>Selected Author ID: @authorID</p>
@code{
string authorID;
int _selectedAuthorID;
private int SelectedAuthorID
{
get => _selectedAuthorID;
set
{
if (_selectedAuthorID != value)
{
_selectedAuthorID = value;
// Call OnSelectStock only if the author ID is an even number
if (value % 2 == 0)
{
OnSelectStock(value);
}
}
}
}
List<Author> authors = Enumerable.Range(1, 10).Select(i => new Author
{ ID = i, Name = $"Author {i.ToString()}" }).ToList();
private void OnSelectStock(int value)
{
authorID = value.ToString();
}
public class Author
{
public int ID { get; set; }
public string Name { get; set; }
}
}
- 1 回答
- 0 關(guān)注
- 108 瀏覽
添加回答
舉報(bào)