diff --git a/src/lib/collection.html b/src/lib/collection.html index 71cd691336..997b3a5f3a 100644 --- a/src/lib/collection.html +++ b/src/lib/collection.html @@ -50,9 +50,10 @@ }, removeKey: function(key) { - key = this._parseKey(key); - this._removeFromMap(this.store[key]); - delete this.store[key]; + if (key = this._parseKey(key)) { + this._removeFromMap(this.store[key]); + delete this.store[key]; + } }, _removeFromMap: function(item) { @@ -88,29 +89,30 @@ }, _parseKey: function(key) { - if (key[0] == '#') { + if (key && key[0] == '#') { return key.slice(1); } - throw new Error('unexpected key ' + key); }, setItem: function(key, item) { - key = this._parseKey(key); - var old = this.store[key]; - if (old) { - this._removeFromMap(old); - } - if (item && typeof item == 'object') { - this.omap.set(item, key); - } else { - this.pmap[item] = key; + if (key = this._parseKey(key)) { + var old = this.store[key]; + if (old) { + this._removeFromMap(old); + } + if (item && typeof item == 'object') { + this.omap.set(item, key); + } else { + this.pmap[item] = key; + } + this.store[key] = item; } - this.store[key] = item; }, getItem: function(key) { - key = this._parseKey(key); - return this.store[key]; + if (key = this._parseKey(key)) { + return this.store[key]; + } }, getItems: function() { diff --git a/src/standard/notify-path.html b/src/standard/notify-path.html index 927f8403d4..328a6cbba9 100644 --- a/src/standard/notify-path.html +++ b/src/standard/notify-path.html @@ -85,7 +85,9 @@ var info = {}; this._get(path, this, info); // Notify change to key-based path - this._notifyPath(info.path, value, fromAbove); + if (info.path) { + this._notifyPath(info.path, value, fromAbove); + } }, // Note: this implemetation only accepts key-based array paths