第一組:姚成棟 AngularJs分頁
要正確并完整地顯示分頁信息,一定要注意以下幾個點:
1. HTML頁面上不能寫錯,模板如下
其中容易缺的是:max-size="10"最大顯示頁數(當頁數很多時特別實用);
2. 對應的controller中
因為在Js/models.js中有定義
也可以自己對其進行定義。
3. 如果頁面上有兩個以上的小模塊,類似于
則pageChanged方法要改成如下:
4. 還有一個類似于分頁的,就是序號
要注意的點主要是,需要應寫成如下,
不能寫成{{$index+1}},會出現轉到第二頁后序號仍從1開始的情況
5. 總結
這個分頁的注意事項主要是針對我們當前使用的新模板而言的,而且是針對分頁出現的一些小問題。如果出現分頁數據無法出現,或者刷新之后分頁出現不同的情況,可以先看看controller中是否有多個$scope.page = data.Page字段,如果不是這個問題,那應該就需要調試后臺傳過來的分頁數據了。
第二組:徐晉 jquery對象和DOM對象的相互轉換、 刪除節點:remove和detach的區別、 AppCan UI基礎框架
1. jquery對象和DOM對象的相互轉換
-
jquery --> DOM
var
("#cr"); //jquery對象
var cr = $cr[0]; //DOM對象var
("#cr"); //jquery對象
var cr = $cr.get(0); //DOM對象
-
DOM --> jquery
- var cr = document.getElementById("cr"); //DOM對象
var(cr); //jquery對象
- var cr = document.getElementById("cr"); //DOM對象
2. 刪除節點:remove和detach的區別
- .remove()方法
當某個節點用remove()方法刪除后,該節點所包含的所有后代節點將同時被刪除。這個方法的返回值是一個指向已被刪除的節點的引用,因此可以在以后再使用這些元素。
var $li = $("ul li:eq(1)").remove();
$li.appendTo("ul");
- .detach()方法
detach()和remove()一樣,也是從DOM中去掉所有匹配的元素。但需要注意的是,這個方法不會把匹配的元素從jquery對象中刪除,因而可以在將來再使用這些匹配的元素。與remove()不同的是,所有綁定的事件、附加的數據等都會保留下來。
$("ul li").click(function(){
alert($(this).html);
})
var $li = $("ul li:eq(1)").detach();
$li.appendTo("ul");
使用detach()后appendTo,該元素所綁定的click事件仍然存在;
若使用remove()后appendTo,click事件將不復存在。
總結來說:remove()與detach()的方法區別在于元素綁定的事件與附加數據是否被失效!
3. AppCan UI基礎框架
在AppCan UI架構中進行了CSS類封裝
ub 元素采用彈性BOX布局
ub-rev 子元素反序排列
ub-con 在子元素中加入一個容器,用于避免內容引起子元素大小變化
對應CSS代碼為position:absolute;width:100%;height:100%;
ub-ac、ub-ae 子元素垂直居中對齊和尾對齊
ub-pc、ub-pe、ub-pj 子元素水平居中對齊、尾對齊和兩端對齊
ub-ver 子元素縱向排列
ub-f1、ub-f2、ub-f3、ub-f4子元素占用區域份數
UI的分辨率適配
UI 中,我們在中間件中為不同屏幕密度(單位尺寸中可顯示的點數),默認定義好了字體,開發者不再需要在代碼中引入ui-media.css文件,即使有新的 分辨率手機問世,也會自動適配。目前參照Andorid屏幕密度劃分為低密度、普通密度、高密度、超高密度、超超高密度,分別定義字體為14px 16px 24px 32px 48px。
第三組: liger中利用 js關閉alertpage 和 Ajax 簡單操作步驟
1. liger中利用 js關閉alertpage
在調用完Ajax之后想要關閉當前頁面回到父頁面,如果用parent.CloseAlertPage()
;
是不起作用的,可以利用以下方法:
parent.$.ligerDialog.close();
parent.$(".l-dialog,.l-window-mask").remove();
2. Ajax 簡單操作步驟
AJAX 不是新的編程語言,而是一種使用現有標準的新方法。
AJAX 最大的優點是在不重新加載整個頁面的情況下,可以與服務器交換數據并更新部分網頁內容。
AJAX 不需要任何瀏覽器插件,但需要用戶允許JavaScript在瀏覽器上執行。
以下是根據我實際操作過程中的個人理解,具體解釋在代碼的注釋中供參考:
.aspx
$.ajax({
type: "post",
url: "/Action/PmAsCheckHandler.ashx",
data: {
method: "getplantid",
//Ajax引用的方法
insplantid: planTid //調ajax時需要傳入的參數
},
dataType: 'text',
async: false,
//同步異步操作,false表示異步,即在頁面加載完之后再執行ajax;
若是true,表示同步,即在頁面加載時運行ajax;
由于ajax運行速度較快,往往在頁面加載之前便完成運行,
所以在我們現在的實際運用過程中,多設置成false。
success: function(data) {
plancheckType = data; //data是用于接收執行完的Ajax返回值
}
});
.ashx.cs
public void ProcessRequest(HttpContext context) {
context.Response.ContentType = "text/plain";
string method = !string.IsNullOrEmpty(context.Request["method"]) ? context.Request["method"].ToLower() : "";
string result = "";
switch (method) { //method表示從前臺傳進來的方法,上面的代碼只需復制即可
case "getplantid":
result = GetPlanType(context);//方法返回值
break;
}
context.Response.Write(result);
}
//下面的實際方法與我們在后臺寫的方法類似;需要注意的是loginUser不能直接用,需要用DB.Config.systemAdmin代替
/// <summary>
/// 通過plantid查問題類型
/// </summary>
/// <param name="context"></param>
/// <returns></returns>
public string GetPlanType(HttpContext context) {
string plantid = context.Request["insplantid"];
Model.PmAsFormulatePlan dbpafplan = DB.PmAsFormulatePlan.SelectById(DB.Config.systemAdmin, plantid.ToLong());
string planType = Model.EnumHelper.GetEnumDescription(dbpafplan.PmAsFormulateCheckType);
return planType;
}
第四組:張元一 興趣分享
《驚魂記》(Psycho)中正對噴水蓮蓬頭的鏡頭是怎么拍出來的?
比較正式的記載,如Alfred Hitchcock and the Making of Psycho這本書中,給出的答案指解決方案是由希區柯克本人設想的,把噴頭的中間孔堵住,然后將攝影機放在比較遠的地方用長焦鏡頭拍攝,再把景別取緊一點,就讓觀眾有一種水柱直沖鏡頭而去的感覺了。
另外有一種流言,例如IMDb的trivia等處,說劇組設計了一個直徑6英尺(約合180cm)的巨型噴頭(把道具放大,希區柯克不是沒干過類似的事),然后把攝影機放底下拍來。但這種說法找不到有力的支持,有的工作人員表示不知道此事。虛假的可能性比較大。
原文抄錄如下:
希區柯克還讓拉塞爾想辦法,設計一個主觀視角鏡頭,以提高觀眾的代入感。這鏡頭要拍的就是,花灑噴出的水,直接沖著鏡頭而來。“那是個老式花灑,無法隨意控制噴水方向?!眻鲇浭┝_姆注意到,“所以大家都很疑惑,‘如果直接對著它拍,那又如何保證鏡頭不會被淋濕?’希區柯克先生解釋,‘用長焦鏡拍,再把花灑上面靠里的幾個洞堵上,水就不會亂噴了。’用長焦鏡,我們可以退得更靠后一些,水看似要打在鏡頭上,其實卻只是從兩側噴過去了。站在邊上的人倒是確實都被淋到了,但也拍到了我們需要的畫面?!?/p>
第五組: 周倩宇 實現全選執行批量操作
在做頁面功能時,經常會遇到需要批量執行的操作,例如:批量刪除,批量發布,批量提交等。當數量少的時候可以像圖中一個個勾選。
但是當數據量很大的時候,勾選單選框很費時間,這時就需要勾選全選框。然而全選框對應的那行是沒有數據的,我們需要一些方法在勾選全選框的同時,排除掉全選框那一行。
也就是說,在勾選全選框執行批量操作時,在對應的執行方法中排除圖中紅框那一行,從序號1那一行開始獲取數據。
代碼舉例:
先在此處給全選框所對應的那一行加個ID
<table class="tablelist" style="width: 3000px" id="tbodyID">
然后在方法中進行處理
<script>
function changeApply() {
var items = document.getElementsByName("cb");
var rows = document.getElementById("tbodyID").rows;
var count = 0;
var tid = "";
for (var i = 0; i < items.length; i++) {
//當前checkbox實現勾選
if (items[i].checked) {
var row = items[i].parentElement.parentElement.rowIndex;
var status = rows[row].cells[3].innerHTML;
if (status != "已發布" && row != 0) {
alert("請選擇已發布狀態的數據!");
return false;
}
count += 1;
tid += items[i].value + ','
}
}
if (count == 0) {}
else if (count != 0) {
var r = confirm("確認xx?")
if (r == true) {
openTab();
}
}
}
</script>