以下のような、HTMLとスクリプト
<input type="text" data-bind="value: msg1" /> <input type="text" data-bind="value: msg2" /> <span data-bind="text: res"></span>
と、
$(function(){ var ViewModel = function(){ this.msg1 = ko.observable('111'); this.msg2 = ko.observable('222'); this.res = ko.computed(function(){ return this.msg1() + ":" + this.msg2(); }, this); }; var viewModel = new ViewModel(); ko.applyBindings(viewModel); });
で、input の valueが変化したときに、span の内容が変化するものを作ると、crome , edge はきちんと動くが
IE11では valueが変化したときに動かない。
computed に、通知をいつでも=always にしないとならない。
this.res = ko.computed(function(){ return this.msg1() + ":" + this.msg2(); }, this).extend({ notify: 'always' });
書き直すと以下のとおり。
$(function(){ var ViewModel = function(){ this.msg1 = ko.observable('111'); this.msg2 = ko.observable('222'); this.res = ko.computed(function(){ return this.msg1() + ":" + this.msg2(); }, this).extend({ notify: 'always' }); }; var viewModel = new ViewModel(); ko.applyBindings(viewModel); });