http://stackoverflow.com/questions/42816706/summernote-knockoutjs-editor-not-updated-after-update-value-of-observable
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.1/knockout-min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout.mapping/2.4.1/knockout.mapping.min.js"></script>
<link rel="stylesheet" href="https://netdna.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/summernote/0.8.2/summernote.css">
<!-- include libraries(jQuery, bootstrap) -->
<script src="https://netdna.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.js"></script>
<!-- include summernote css/js-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/summernote/0.8.2/summernote.js"></script>
<div>
<div class="html-editor" data-bind="summernote: PublishNote"></div>
</div>
<textarea data-bind="value: PublishNote"></textarea>
JavaScript
var viewModel = function(){
var self = this;
self.PublishNote = ko.observable("Initial Data");
setTimeout(function(){
self.PublishNote('<h1>Hello World</h1');
}, 10000);
}
ko.bindingHandlers.summernote = {
init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
var value = ko.unwrap(valueAccessor());
var $element = $(element);
$element.html(value).summernote({
onChange: function (contents) {
valueAccessor()(contents);
}
});
},
update: function (element, valueAccessor) {
var $element = $(element);
$element.summernote('code',ko.utils.unwrapObservable(valueAccessor()));
}
};
ko.applyBindings(new viewModel());