diff --git a/knockback-core-stack.js b/knockback-core-stack.js index 8c491d4d..2cbafb0a 100644 --- a/knockback-core-stack.js +++ b/knockback-core-stack.js @@ -8074,6 +8074,21 @@ kb.Store = (function() { kb.release(this.replaced_observables); }; + Store.prototype.compact = function() { + var index, record, removals, _ref1, _ref2; + removals = []; + _ref1 = this.observable_records; + for (index in _ref1) { + record = _ref1[index]; + if ((_ref2 = record.observable) != null ? _ref2.__kb_released : void 0) { + removals.push(record); + } + } + if (removals.length) { + this.observable_records = _.difference(this.observable_records, removals); + } + }; + Store.prototype.register = function(obj, observable, options) { var creator; if (!observable) { @@ -8107,8 +8122,6 @@ kb.Store = (function() { continue; } if (record.observable.__kb_released) { - record.obj = null; - record.observable = null; removals.push(record); continue; } @@ -8117,8 +8130,10 @@ kb.Store = (function() { } else if ((record.creator === creator) || (record.creator.create && (record.creator.create === creator.create))) { if (removals.length) { this.observable_records = _.difference(this.observable_records, removals); + return _.indexOf(this.observable_records, record); + } else { + return index; } - return index; } } } diff --git a/knockback-core-stack.min.js b/knockback-core-stack.min.js index a3a02180..a587f36a 100644 --- a/knockback-core-stack.min.js +++ b/knockback-core-stack.min.js @@ -106,5 +106,5 @@ a.a.extend(x,b(d,g,x.fa,k,x.za));for(v=0;n=x.R[v];p=n.nextSibling,C=n,v++)n!==p& new a.J;a.La(a.J.Aa);a.b("nativeTemplateEngine",a.J);(function(){a.Ba=function(){var a=this.Rb=function(){if("undefined"==typeof u||!u.tmpl)return 0;try{if(0<=u.tmpl.tag.tmpl.open.toString().indexOf("__"))return 2}catch(a){}return 1}();this.renderTemplateSource=function(b,e,g){g=g||{};if(2>a)throw Error("Your version of jQuery.tmpl is too old. Please upgrade to jQuery.tmpl 1.0.0pre or later.");var h=b.data("precompiled");h||(h=b.text()||"",h=u.template(null,"{{ko_with $item.koBindingContext}}"+h+ "{{/ko_with}}"),b.data("precompiled",h));b=[e.$data];e=u.extend({koBindingContext:e},g.templateOptions);e=u.tmpl(h,b,e);e.appendTo(w.createElement("div"));u.fragments={};return e};this.createJavaScriptEvaluatorBlock=function(a){return"{{ko_code ((function() { return "+a+" })()) }}"};this.addTemplate=function(a,b){w.write("