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