Alerts Only Showing When Message != undefined
The title says it all
by db_dev
HTML
<script src="//code.jquery.com/jquery-3.3.1.slim.min.js"></script>
<link rel="stylesheet" href="//stackpath.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css">
<script src="//cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.0/umd/popper.min.js"></script>
<script src="//stackpath.bootstrapcdn.com/bootstrap/4.1.0/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.5.0/knockout-min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout.mapping/2.4.1/knockout.mapping.js"></script>
<!--
Bootstrap docs: https://getbootstrap.com/docs
-->
<div id="testBox" class="container">
<div class="row">
<div class="col">
<!-- ko if: statusMsg().length > 0 -->
<div id="statusAlert" class="alert alert-warning alert-dismissible fade" role="alert" data-bind="css: { show: statusMsg().length > 0 }">
<span data-bind="text:statusMsg"></span>
<button type="button" class="close" data-dismiss="alert" aria-label="Close" data-bind="click: statusMsgClose">
<span aria-hidden="true">×</span>
</button>
</div>
<!-- /ko -->
</div>
</div>
</div>
CSS
.row {
background: #f8f9fa;
margin-top: 20px;
}
.col {
border: solid 1px #6c757d;
padding: 10px;
}
JavaScript
var TestVM = function() {
var self = this;
/*
// When alert.length != 0, add show class to alert
If not remove show class
//If user clicks close, remove class
*/
// Status
self.statusMsg = ko.observable("");
self.statusMsgClose = function() {
self.statusMsg("");
};
}
vm = new TestVM();
ko.applyBindings(vm, document.getElementById("testBox"));
$("#statusAlert .close").on('click', function() {
console.log("Closed");
})
vm.statusMsg("Nothing");