fix remove name bug

This commit is contained in:
lavrton 2015-02-08 09:52:19 +07:00
parent 264a4bab1c
commit 0ea9f0e257
5 changed files with 50 additions and 31 deletions

View File

@ -510,18 +510,11 @@ var Konva = {};
}
},
_addName: function(node, name) {
if(name !== undefined) {
var names = name.split(/\s/g);
for(var n = 0; n < names.length; n++) {
var subname = names[n];
if (subname) {
if(this.names[subname] === undefined) {
this.names[subname] = [];
}
this.names[subname].push(node);
}
if(name) {
if(!this.names[name]) {
this.names[name] = [];
}
this.names[name].push(node);
}
},
_removeName: function(name, _id) {
@ -3697,10 +3690,26 @@ var Konva = {};
return this;
},
setName: function(name) {
var oldName = this.getName();
debugger;
var oldNames = (this.getName() || '').split(/\s/g);
var newNames = (name || '').split(/\s/g);
var subname, i;
// remove all subnames
for(i = 0; i < oldNames.length; i++) {
subname = oldNames[i];
if ((newNames.indexOf(subname)) === -1 && subname) {
Konva._removeName(subname, this._id);
}
}
// add new names
for(i = 0; i < newNames.length; i++) {
subname = newNames[i];
if ((oldNames.indexOf(subname) === -1) && subname) {
Konva._addName(this, subname);
}
}
Konva._removeName(oldName, this._id);
Konva._addName(this, name);
this._setAttr(NAME, name);
return this;
},

6
konva.min.js vendored

File diff suppressed because one or more lines are too long

View File

@ -292,18 +292,11 @@ var Konva = {};
}
},
_addName: function(node, name) {
if(name !== undefined) {
var names = name.split(/\s/g);
for(var n = 0; n < names.length; n++) {
var subname = names[n];
if (subname) {
if(this.names[subname] === undefined) {
this.names[subname] = [];
}
this.names[subname].push(node);
}
if(name) {
if(!this.names[name]) {
this.names[name] = [];
}
this.names[name].push(node);
}
},
_removeName: function(name, _id) {

View File

@ -1421,10 +1421,26 @@
return this;
},
setName: function(name) {
var oldName = this.getName();
debugger;
var oldNames = (this.getName() || '').split(/\s/g);
var newNames = (name || '').split(/\s/g);
var subname, i;
// remove all subnames
for(i = 0; i < oldNames.length; i++) {
subname = oldNames[i];
if ((newNames.indexOf(subname)) === -1 && subname) {
Konva._removeName(subname, this._id);
}
}
// add new names
for(i = 0; i < newNames.length; i++) {
subname = newNames[i];
if ((oldNames.indexOf(subname) === -1) && subname) {
Konva._addName(this, subname);
}
}
Konva._removeName(oldName, this._id);
Konva._addName(this, name);
this._setAttr(NAME, name);
return this;
},

View File

@ -1129,6 +1129,7 @@ suite('Node', function() {
// removing name
circle.removeName('foo');
assert.equal(circle.getName(), 'myCircle');
assert.equal(layer.find('.foo').length, 0);
});
// ======================================================