mirror of
https://github.com/meteor/meteor.git
synced 2026-05-02 03:01:46 -04:00
Add delete to ReactiveDict
This commit is contained in:
committed by
David Greenspan
parent
2ab2ddedcc
commit
2ed8ff2a0a
@@ -62,3 +62,38 @@ Tinytest.add('ReactiveDict - clear() works', function (test) {
|
||||
test.equal(equalsUndefined, true);
|
||||
test.equal(all, {});
|
||||
});
|
||||
|
||||
Tinytest.add('ReactiveDict - delete(key) works', function (test) {
|
||||
var dict = new ReactiveDict;
|
||||
dict.set('foo', 'bar');
|
||||
dict.set('bar', 'foo');
|
||||
|
||||
var val, equals, equalsUndefined, all;
|
||||
|
||||
Tracker.autorun(function() {
|
||||
val = dict.get('foo');
|
||||
});
|
||||
Tracker.autorun(function() {
|
||||
equals = dict.equals('foo', 'bar');
|
||||
});
|
||||
Tracker.autorun(function() {
|
||||
equalsUndefined = dict.equals('foo', undefined);
|
||||
});
|
||||
Tracker.autorun(function() {
|
||||
all = dict.all();
|
||||
});
|
||||
|
||||
test.equal(val, 'bar');
|
||||
test.equal(equals, true);
|
||||
test.equal(equalsUndefined, false);
|
||||
test.equal(all, {foo: 'bar', bar: 'foo'});
|
||||
|
||||
dict.delete('foo');
|
||||
Tracker.flush();
|
||||
|
||||
test.isUndefined(val);
|
||||
test.equal(equals, false);
|
||||
test.equal(equalsUndefined, true);
|
||||
test.equal(all, {bar: 'foo'});
|
||||
|
||||
});
|
||||
|
||||
@@ -166,6 +166,24 @@ _.extend(ReactiveDict.prototype, {
|
||||
|
||||
},
|
||||
|
||||
delete: function(key) {
|
||||
var self = this;
|
||||
var oldKeys = self.keys;
|
||||
|
||||
_.each(oldKeys, function(value, oldKey) {
|
||||
if (key == oldKey){
|
||||
changed(self.keyDeps[oldKey]);
|
||||
changed(self.keyValueDeps[oldKey][value]);
|
||||
changed(self.keyValueDeps[oldKey]['undefined']);
|
||||
delete self.keys[oldKey]; // clean up
|
||||
}
|
||||
});
|
||||
|
||||
// trigger a change regardless if any matching key found...
|
||||
self.allDeps.changed();
|
||||
|
||||
},
|
||||
|
||||
_setObject: function (object) {
|
||||
var self = this;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user