2015-06-13 39 views
0

假設表中的每一行都有它自己的視圖和一個模型(CollectionViews)。每行都有一個用於編輯行數據的按鈕。點擊後,當前行和模型的EditView被激活,其中一個表單通過文本字段呈現給用戶,取消並提交按鈕。骨幹 - 防止重疊的相同視圖

enter image description here

編輯視圖如果用戶提交的編輯形式或取消編輯只能被移除。

我的問題是什麼是防止重疊例如多個編輯視圖當用戶單擊編輯按鈕,沒有做編輯或關閉編輯視圖,而不是單擊另一個編輯按鈕的最好方式行和另一行,沒有完成編輯。

我剛剛開始學習骨幹,所以這就是我所做的 - 這更多的是一種攻擊。創建編輯視圖

//delete previous view 
for (x in editTaskViewArray) { 
    editTaskViewArray[x].remove(); 
} 

//empty array 
editTaskViewArray = []; 

//create and activate edit view 
var editTaskView = new App.Views.EditTask({ 
    model: this.model 
}).render(); 
$('#edittask').append(editTaskView.el).hide().fadeIn(500); 

//add edit view to array so that can be removed later 
editTaskViewArray.push(editTaskView); 

//create global array for storing view 
var editTaskViewArray = new Array(); 

代碼謝謝你的任何提示

回答

1

//更改刪除代碼。

//editTaskView is global 
//delete previous view if one exists 

If(editTaskView.el){ 
    editTaskView.remove(); 
} 

//create and activate edit view 
editTaskView = new App.Views.EditTask({model:this.model }).render(); 

$('#editTaskView').append(editTaskView.el).hide().fadeIn(500); 
+0

謝謝你的回答:D –

0

另一種解決方案中,每當一個視圖被激活時,禁用所有鏈接,使當前視圖模態的視圖,例如,所有的行中的鏈接是使用例如.delete和.edit類。這樣,所有其他視圖,才能激活只有當用戶關閉當前視圖

<td><a class='delete' href='#'>Delete</a></td> \ 
<td><a class='edit' href='#'>Edit</a></td>"; 

使用此代碼來禁用鏈接,並通過更改類名

$("#tbl1").find("a").removeAttr("href"); 
$("#tbl1").find("a.delete").attr("class", "nodelete"); 
$("#tbl1").find("a.edit").attr("class", "noedit"); 
$("#tbl1").find("a.nodelete").css("opacity", "0.6"); 
$("#tbl1").find("a.noedit").css("opacity", "0.6"); 

使用此代碼禁用事件啓用鏈接

$("#tbl1").find("a").attr("href", "#"); 
$("#tbl1").find("a.nodelete").attr("class", "delete"); 
$("#tbl1").find("a.noedit").attr("class", "edit"); 
$("#tbl1").find("a.delete").css("opacity", "1"); 
$("#tbl1").find("a.edit").css("opacity", "1");