我不我知道我是不是很想獲得MVC,但我只是簡單地設置一個包含彈出窗口細節的視圖模型對象,然後當生成視圖時(如果當前設置的話),我填充包含彈出框的div。 CSS控制外觀和定位。
所以基本上我依靠祕銀自上而下的重新渲染方法來有條件地構建基於當前應用程序狀態的視圖 - 它運行得非常好,對我來說是非常明智的。
我實際上使用了一個彈出確認對象的列表,所以多個確認可以排隊。
在控制器中,進行確認隊列:
function Controller() {
...
this.confirmation =[];
...
}
在視圖中,創建一個確認視圖div
,如果有一個確認排隊,或空佔位符否則(Mithrils差分如果容器元素穿上效果最好」牛逼出現和消失,從渲染到渲染):
function crtView(ctl) {
...
return m("div", [
...
crtConfirmationView(ctl),
...
]);
}
function crtConfirmationView(ctl) {
var cfm=ctl.confirmation[0];
return m("div#popup-confirm",(cfm ? muiConfirm.crtView(ctl,cfm.title,cfm.body,cfm.buttons) : null));
}
然後,每當需要確認,只需按下一個確認對象到隊列中,讓祕銀的繪圖系統的運行和重建的看法。
function deleteRecord(ctl,evt,row,idx,rcd) {
var cfm={
title : m("span","Delete Customer: "+rcd.ContactName),
body : [
m("p","Do you really want to delete customer "+rcd.CustomerId+" ("+rcd.ContactName+") and all associated appointments and addresses?"),
m("p.warning", "This action cannot be undone. If this is a duplicate customer, it should be merged with the other record."),
],
buttons : deleteButtons,
proceed : "delete",
index : idx,
record : rcd,
};
ctl.confirmation.push(cfm);
}
確認對象包含任何性質的confirm
輔助函數crtView
需要創建一個確認視圖,然後採取行動,當用戶點擊一個按鈕(或按ENTER或ESCAPE等) - 只是標準的UI的東西你抽象成共享的可重用組件。
注:萬一有人有關於數組的索引的問題,因爲我已經使用數組索引來識別數據模型中的記錄(刪除完成後,數組元素應該被刪除搬走)。相反,我使用數據庫ID來定位受影響的記錄,這對於模型中的干預更改具有彈性,例如對列表進行排序。
'm(「.modal」,body())'是否正確?它應該不是'm(「div.modal」,body())嗎? – 2014-09-20 01:45:37
如果未指定,元素默認爲'div'。 – AlexG 2014-10-01 07:16:52