javascript - Writing an escaped/unescaped Observable in Knockout -
i have issue want store quoted strings , display unquoted while in form. first solution create 2 bindinghandlers 1 value , 1 text.
ko.bindinghandlers.escapedvalue = { init : function (element, valueaccessor, allbindingsaccessor) { var $element = $(element), contentobservable = valueaccessor(), currenttxt = ko.utils.unwrapobservable(contentobservable); if (currenttxt) { $element.val(unescape(currenttxt)); } $element.change(function (e) { contentobservable(escape($element.val())); }); } }; ko.bindinghandlers.escapedtext = { init : function (element, valueaccessor, allbindingsaccessor) { var $element = $(element), contentobservable = valueaccessor(), currenttxt = ko.utils.unwrapobservable(contentobservable); if (currenttxt) { $element.text(unescape(currenttxt)); } contentobservable.subscribe(function (newvalue) { $element.text(unescape(newvalue)); }); } }; however gave me 2 issues 1) not live updating anymore after key down 2) when validation on values example character length checks length of quoted string.
how can write ko.escapedobservable() or ko.subscribable.fn.escaped()
i have gotten closer cant seem saving correct. displays , comparison when goto save values still unescped
ko.escapedobservable = function (initialvalue) { var observableval = ko.observable(initialvalue), result = ko.computed({ read: function () { return unescape(observableval()); }, write: function (newvalue) { return observableval(escape(newvalue)); } }); this.tojson = function () { return escape(observableval()); }; return result; }; ====edit==== solution using 2 observables // escape , unescape text value
ko.escapedobservable = function (initialvalue) { var observableval = ko.observable(initialvalue), result = ko.computed({ read: function () { return observableval(); }, write: function (newvalue) { observableval(newvalue); } }); result.unescaped = ko.computed({ read: function () { return unescape(observableval()); }, write: function (newvalue) { observableval(escape(newvalue)); } }); return result; };
ko.escapedobservable = function (initialvalue) { var observableval = ko.observable(initialvalue), result = ko.computed({ read: function () { return observableval(); }, write: function (newvalue) { observableval(newvalue); } }); result.unescaped = ko.computed({ read: function () { return unescape(observableval()); }, write: function (newvalue) { observableval(escape(newvalue)); } }); return result; };
Comments
Post a Comment