Я новичок ie в Blazor (не все?), И я пытаюсь найти лучший подход для дублирования основанного на JavaScript клика и отображения пользовательского интерфейса, который я собрал ранее.
Абстрагируя некоторые избыточные элементы, код страницы выглядит следующим образом:
<div class="container">
<div class="row">
<div class="col-lg-6 align-self-center headerRow1a">
<div class="HeaderDiv">
<span id="Header">MAIN PAGE</span>
</div>
</div>
<div class="col-lg-6 align-self-center headerRow1b">
<div id="NewMsgeDiv">
<button class="btn btn-primary btn-lg newMsgButton" data-toggle="modal" data-target="#demo"><span class="fas fa-edit"></span>New</button>
</div>
</div>
</div>
<div class="row">
<div class="col-4">
<div class="list-group" id="myList" role="tablist">
<div class="list-group-item" id="yourHeader"></div>
<a class="list-group-item list-group-item-action active" data-toggle="list" href="#home" role="tab" onclick="popIt(1)">
<span id="msgSubject1">Message 1 Title</span><br /><span class="datetimeCls" id="datetime1">12/11/18 10:37am</span>
</a>
</div>
</div>
<div class="col-8">
<div class="tab-content">
<div id="msgeHeader"></div>
<div Id="MenuBar">
<div class="messageTitleSection"><span class="theMessage" id="messageTitle"> </span> <br/><span id="messageDate"> </span></div><div class="iconSection"><span style="font-size: 25px; color:grey;"><a href="#" class="MenuIcon" data-toggle="modal" data-target="#demoReply"><i class="fa fa-reply"></i></a> </span><span style="font-size: 25px; color:grey; text-align:right"><a href="#" class="MenuIcon"><i class="fas fa-print"></i></a></span> <span style="font-size: 25px; color:grey; text-align:right"><a href="#" class="MenuIcon" data-toggle="modal" data-target="#demoDelete"><i class="fa fa-trash-alt"></i></a></span></div>
</div>
<div class="textDiv tab-pane fade active" id="home" role="tabpanel">
<p class="textDisplay">Message Body</p>
</div>
</div>
</div>
<script>
function popIt(msg) {
var theMsg = msg;
var subject = document.getElementById('msgSubject' + msg).innerHTML;
var dateTime = document.getElementById('datetime' + msg).innerHTML;
var msgTitle = document.getElementById('messageTitle');
var msgDate = document.getElementById('messageDate');
msgTitle.innerHTML = subject;
msgDate.innerHTML = dateTime;
}
</script>
По сути, пользовательский интерфейс состоит из двух основных частей, напоминающих интерфейс электронной почты. В левом поле перечислены заголовки сообщений, и если кто-то нажмет на одно из этих полей, в правом окне появится соответствующее тело сообщения. Опять же, как интерфейс электронной почты.
Это казалось бы простым с Bootstrap и прямым JavaScript, но я не уверен, какой лучший подход был бы в Blazor. Должен ли каждый из элементов быть компонентом? Должен ли JavaScript быть обработан с помощью Blazor JavaScript Interop? Поскольку в Blazor нет таких манипуляций с DOM, как .inner Html и т. Д. c. Как лучше всего обрабатывать переключение текста элемента вперед и назад?
Кто-нибудь делал что-то подобное в Blazor раньше? ?
Спасибо!