Выпуск:Famo.us - Как удалить вид с поверхности на ней
мое famo.us приложение позволяет пользователю добавлять много взглядов «карты» на рабочей области. Эти карты перетаскиваются, добавляются непосредственно в ContainerSurface, а не в какой-либо конкретной компоновке.
Карты имеют кнопку удаления, которая при нажатии удаляет карту.
В настоящее время я "удалить" представление с помощью
theCardView.render = функция() {возвращение нуль; }
Это работает при удалении вида и поверхностей на нем из рабочей области, однако имеет странный побочный эффект. Когда я добавляю другую карту, поверхность кнопки удаления находится под поверхностью заголовка, на которой она обычно находится.
Если я добавлю вторую карту, тогда кнопка удаления на этой второй карте отображается правильно.
Когда я смотрю на DOM после удаления я вижу, что дивы для поверхностей на мой взгляд, по-прежнему существует, но пустой
Есть ли лучше/уборщик способ «удалить» представление? Или есть что-то еще, что мне нужно сделать, чтобы очистить DOM?
Я могу обойти эту проблему, установив z-индекс кнопки на 1; однако это вызывает проблему, когда вы перетаскиваете карты друг вокруг друга. Кнопка всегда находится поверх всех других карт.
код, как я добавить CardViews
this._eventInput.on('add-cards', function() {
for (var i=0; i < that.cardPicker.selected.length ;i++){
var x = new CardView({data:that.cardPicker.selected[i]});
that.subscribe(x);
that.cards.push(x);
that.contentContainer.add(x);
}
});
код, как я удалить мнение о
this._eventInput.on('delete-card',function(e){
// e is the CardView object that has the button that was clicked
removeFromArray(that.cards,e);
e.render = function(){ return null; }
});
код для просмотра конструктора
function CardView(data) {
View.apply(this, arguments);
that = this;
this.dbdata = data.data;
this.layout = new HeaderFooterLayout({
headerSize: 43,
footerSize: 0
});
// Header
var oname = this.dbdata.dbname+"."+this.dbdata.table.name;
this.headerSurface = new Surface({size: [275, 43],
content: oname
,properties: {
backgroundColor:'rgb(51, 51, 51)'
,color:'white'
,paddingTop:'10px'
,paddingLeft:'10px'
}
});
this.draggable = new Draggable();
this.headerSurface.pipe(this.draggable);
this.draggable.activate();
this.layout.header.add(this.headerSurface);
// Header delete button
this.deletebtn = new Surface({size: [55, 40],
content: '<button type="button" class="btn btn-default">del</button>'
,properties:{
}
});
this.mod = new Modifier({
transform: Transform.translate(215, 0, 0)
});
this.layout.header.add(this.mod).add(this.deletebtn);
this.deletebtn.pp = this;
this.deletebtn.on('click', function() {
that._eventOutput.emit('delete-card',this.pp);
});
this.layout.content.add(new Surface({size: [275, 300],
properties: {
backgroundColor:'rgb(236, 236, 236)'
}
}));
// a modifier that centers the surface
this.centerModifier = new Modifier({
origin : [0.5, 0.5],
align: [0.5, 0.5]
});
this.add(this.draggable).add(this.centerModifier).add(this.layout);
}
Спасибо. Пробовал myView.node.set ({}) и визуально удалил карту и ее элементы. Тем не менее, DOM не очистился, и z-индекс кнопки удаления был неправильным, когда я добавил новую карту. –