Работая над своим заданием MVC, я столкнулся с необходимостью сообщать JavaScript, когда некоторые данные готовы.Я пытался сделать это, назначив модель представлению и вызвав @Model.property_name
в JavaScript, но похоже, что всякий раз, когда я вызываю @Model.property_name
, значение этого bool не обновляется, даже если модель обновляласьэто в фоновом режиме.
Вот код:
Модель
public class saveModel
{
public bool dataReady;
// Members
public void SaveRoute()
{
// Stuff
// Finally, changing the bool
dataReady = true;
}
}
Вид
// Stuff
<script>
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
async function checkDataReady()
{
var ready = @Json.Encode(Model.dataReady);
while (ready != true) {
console.log(ready);
console.log("Sleeping");
await sleep(3000);
ready = @Json.Encode(Model.dataReady);
}
// When data is ready
showDataMined();
}
// On page-load, check if data is ready
document.addEventListener('DOMContentLoaded', function() {
checkDataReady(); });
</script>
Я ожидаю, что когда модель изменитсяdataReady
свойство true, что в следующий раз, когда цикл в checkDataReady()
будет пройден, переменная ready будет присвоена true, однако всегда присваивается false.
Я убедился, что boolна самом деле присваивается истина, поэтому я в тупике.