第一組:姚成棟 Ztree基礎(chǔ)
- 如果ztree要調(diào)用函數(shù),如調(diào)用某個(gè)方法,需要在setting進(jìn)行配置,如
function zTreeOnClick(event, treeId, treeNode) {
};
var setting = {
callback: {
onClick: zTreeOnClick
}
};
-
比如,在頁(yè)面上點(diǎn)擊樹(shù)節(jié)點(diǎn)后顯示其名稱(chēng)相同的數(shù)據(jù),
image.png
代碼如下:
//獲取樹(shù)形結(jié)構(gòu)
var zTreeObj;
// zTree 的參數(shù)配置,深入使用請(qǐng)參考 API 文檔(setting 配置詳解)
var setting = {
callback: {
onClick: zTreeOnClick
}
};
// zTree 的數(shù)據(jù)屬性,深入使用請(qǐng)參考 API 文檔(zTreeNode 節(jié)點(diǎn)數(shù)據(jù)詳解)
var zNodes = [
//數(shù)據(jù)
];
$(document).ready(function () {
zTreeObj = $.fn.zTree.init($("#Typetree"), setting, zNodes);
});
}
- 當(dāng)然別忘記一開(kāi)始要加載樹(shù)
//獲取樹(shù)形結(jié)構(gòu)
var zTreeObj;
$(document).ready(function () {
zTreeObj = $.fn.zTree.init($("#Typetree"), setting, zNodes);
});
第二組:趙彩鳳
問(wèn)題:
AngularJS 日期控件-年度選擇 怎么給默認(rèn)值?

目前給日期控件 placeholder="{{year}}",js獲取當(dāng)前年..僅顯示
后臺(tái)處理:若傳過(guò)來(lái)日期為空,則按當(dāng)前年查詢(xún)
問(wèn)如何給年度時(shí)間控件默認(rèn)值?
第三組:蔡永堅(jiān) AugularJS-功能介紹1
數(shù)據(jù)綁定
AngularJS的雙向數(shù)據(jù)綁定,意味著你可以在Mode(JS)中改變數(shù)據(jù),而這些變動(dòng)立刻就會(huì)自動(dòng)出現(xiàn)在View上,反之亦然。即:一方面可以做到model變化驅(qū)動(dòng)了DOM中元素變化,另一方面也可以做到DOM元素的變化也會(huì)影響到Model。
從View到Controller再到View的數(shù)據(jù)交互(例01):
<html ng-app="demoApp">
……
<input type="text" ng-model="user.name" placeholder="請(qǐng)輸入名稱(chēng)"/>
Hello, {{ user.name }}!
關(guān)鍵: ng-app 、 ng-model 和 { {user.name } }
首先: <html>元素的ng-app屬性。標(biāo)識(shí)這個(gè)DOM里面的內(nèi)容將啟用AngularJS應(yīng)用。
其次:告訴AngularJS,對(duì)頁(yè)面上的“user.name” 這個(gè)Model進(jìn)行雙向數(shù)據(jù)綁定。
第三:告訴AngularJS,在“{{ user.name}}”這個(gè)指令模版上顯示“user.name”這個(gè)Model的數(shù)據(jù)。
scopes、module、controller
scopes
$scope是一個(gè)把view(一個(gè)DOM元素)連結(jié)到controller上的對(duì)象。在我們的MVC結(jié)構(gòu)里,這個(gè) $scope 將成為model,它提供一個(gè)綁定到DOM元素(以及其子元素)上的excecution context。
盡管聽(tīng)起來(lái)有點(diǎn)復(fù)雜,但 $scope 實(shí)際上就是一個(gè)JavaScript對(duì)象,controller和view都可以訪問(wèn)它,所以我們可以利用它在兩者間傳遞信息。在這個(gè) $scope 對(duì)象里,我們既存儲(chǔ)數(shù)據(jù),又存儲(chǔ)將要運(yùn)行在view上的函數(shù)。
每一個(gè)Angular應(yīng)用都會(huì)有一個(gè) $rootScope。這個(gè) $rootScope 是最頂級(jí)的scope,它對(duì)應(yīng)著含有 ng-app 指令屬性的那個(gè)DOM元素。
app.run(function($rootScope) { $rootScope.name = "張三"; });
如果頁(yè)面上沒(méi)有明確設(shè)定 $scope ,Angular 就會(huì)把數(shù)據(jù)和函數(shù)都綁定到這里, 第一部分中的例子就是靠這一點(diǎn)成功運(yùn)行的。
這樣,我們就可以在view的任何地方訪問(wèn)這個(gè)name屬性,使用模版表達(dá)式{{}},像這樣:{{ name }}
module
首先需要明確一下模板的概念。在我還不知道有模板這個(gè)東西的時(shí)候,曾經(jīng)用js拼接出很長(zhǎng)的HTML字符串,然后append到頁(yè)面中,這種方式想想真是又土又笨。后來(lái)又看到可以把HTML代碼包裹在一個(gè)<script>標(biāo)簽中當(dāng)作模板,然后按需要取來(lái)使用。
在ng中,模板十分簡(jiǎn)單,它就是我們頁(yè)面上的HTML代碼,不需要附加任何額外的東西。在模板中可以使用各種指令來(lái)增強(qiáng)它的功能,這些指令可以讓你把模板和數(shù)據(jù)巧妙的綁定起來(lái)。
在<html>標(biāo)簽上多了一個(gè)屬性ng-app=”MyApp”,它的作用就是用來(lái)指定ng的作用域是在<html>標(biāo)簽以?xún)?nèi)部分。在js中,我們調(diào)用angular對(duì)象的module方法來(lái)聲明一個(gè)模塊,模塊的名字和ng-app的值對(duì)應(yīng)。這樣聲明一下就可以讓ng運(yùn)行起來(lái)了。
ng-controller
要明確創(chuàng)建一個(gè)$scope 對(duì)象,我們就要給DOM元素安上一個(gè)controller對(duì)象,使用的是ng-controller 指令屬性:
<div ng-controller="MyController"> {{ person.name }} </div>
ng-controller指令給所在的DOM元素創(chuàng)建了一個(gè)新的$scope 對(duì)象,并將這個(gè)$scope 對(duì)象包含進(jìn)外層DOM元素的$scope 對(duì)象里。在上面的例子里,這個(gè)外層DOM元素的$scope 對(duì)象,就是$rootScope 對(duì)象。這個(gè)scope鏈?zhǔn)沁@樣的:
所有scope都遵循原型繼承(prototypal inheritance),這意味著它們都能訪問(wèn)父scope們。對(duì)任何屬性和方法,如果AngularJS在當(dāng)前scope上找不到,就會(huì)到父 scope上去找,如果在父scope上也沒(méi)找到,就會(huì)繼續(xù)向上回溯,一直到$rootScope 上。即如果controller是多層嵌套的,就會(huì)從最里面一直往外找,這個(gè)scope鏈?zhǔn)沁@樣的:
唯一的例外:有些指令屬性可以選擇性地創(chuàng)建一個(gè)獨(dú)立的scope,讓這個(gè)scope不繼承它的父scope們,這個(gè)會(huì)在指令詳解中說(shuō)明。
第四組:張?jiān)? Pygame編寫(xiě)游戲《外星人入侵》
一. 創(chuàng)建pygame窗口,游戲基本結(jié)構(gòu)如下:
alien_invasion.py
import sys
import pygame
def run_game():
pygame.init()
screen = pygame.display.set_mode((ai_settings.screen_width,ai_settings.screen_height))
pygame.display.set_caption("AlienInvasion")
#主循環(huán)
while True: #讓最近繪制的屏幕可見(jiàn)
pygame.display.flip()
run_game()
將創(chuàng)建一個(gè)空的Pygame窗口
二. 創(chuàng)建設(shè)置類(lèi)
settings.py
import random
class Settings():
def __init__(self):
self.screen_width = 1000
self.screen_height = 600
self.bg_color = (255,255,255)
self.bullet_width = 3
self.bullet_height = 15
self.bullet_color = random.randint(0,256),random.randint(0,256),random.randint(0,256)
self.bullets_allowed = 1000
self.speedup_scale = 2
self.score_scale = 2
self.initialize_dynamic_settings()
self.ship_limit = 3
def initialize_dynamic_settings(self):
self.ship_speed_factor = 20
self.bullet_speed_factor = 4
self.alien_speed_factor = 10
self.fleet_drop_speed = 5
#1表示向右,-1表示向左
self.fleet_direction = 1
#
self.alien_points1 = 10
def increase_speed(self):
self.bullet_speed_factor *= self.speedup_scale
self.alien_speed_factor *= self.speedup_scale
self.fleet_drop_speed *= self.speedup_scale
self.alien_points1 *= self.score_scale
在修改游戲時(shí),只需要修改此文件的一些值,無(wú)需查找散布在文件中的不同配置。
第五組:陳孚楠 設(shè)計(jì)模式
3、 抽象工廠模式
抽象工廠模式是所有形態(tài)的工廠模式中最為抽象和最具一般性的一種形態(tài)。抽象工廠模式是指當(dāng)有多個(gè)抽象角色時(shí),使用的一種工廠模式。抽象工廠模式可以向客戶(hù)端提供一個(gè)接口,使客戶(hù)端在不必指定產(chǎn)品的具體的情況下,創(chuàng)建多個(gè)產(chǎn)品族中的產(chǎn)品對(duì)象。根據(jù)里氏替換原則,任何接受父類(lèi)型的地方,都應(yīng)當(dāng)能夠接受子類(lèi)型。因此,實(shí)際上系統(tǒng)所需要的,僅僅是類(lèi)型與這些抽象產(chǎn)品角色相同的一些實(shí)例,而不是這些抽象產(chǎn)品的實(shí)例。換言之,也就是這些抽象產(chǎn)品的具體子類(lèi)的實(shí)例。工廠類(lèi)負(fù)責(zé)創(chuàng)建抽象產(chǎn)品的具體子類(lèi)的實(shí)例。
為創(chuàng)建一組相關(guān)或相互依賴(lài)的對(duì)象提供一個(gè)接口,而且無(wú)需指定他們的具體類(lèi)。
這里不再舉例,主要在于抽象工廠與工廠模式的區(qū)別:
簡(jiǎn)單的說(shuō),抽象工廠是對(duì)簡(jiǎn)單工廠(工廠方法模式、工廠模式)中的工廠類(lèi)進(jìn)一步抽象成接口,解決了工廠方法中的硬編碼問(wèn)題,因?yàn)橐院笕缬行略鲂碌膶?duì)象,只要再實(shí)現(xiàn)一個(gè)對(duì)應(yīng)的工廠類(lèi),就完成了擴(kuò)展。無(wú)需修改以前的代碼。普通工廠產(chǎn)出是一個(gè)產(chǎn)品(實(shí)例),抽象工廠產(chǎn)出是一個(gè)抽象(接口)。區(qū)別在于,若添加一個(gè)新的產(chǎn)品,前者是修改工廠,后者是創(chuàng)建新工廠(符合“閉合原則”)。
抽象工廠的優(yōu)點(diǎn)/缺點(diǎn):
優(yōu)點(diǎn):
抽象工廠模式隔離了具體類(lèi)的生產(chǎn),使得客戶(hù)并不需要知道什么被創(chuàng)建。
當(dāng)一個(gè)產(chǎn)品族中的多個(gè)對(duì)象被設(shè)計(jì)成一起工作時(shí),它能保證客戶(hù)端始終只使用同一個(gè)產(chǎn)品族中的對(duì)象。
增加新的具體工廠和產(chǎn)品族很方便,無(wú)須修改已有系統(tǒng),符合“開(kāi)閉原則”。
缺點(diǎn):
增加新的產(chǎn)品等級(jí)結(jié)構(gòu)很復(fù)雜,需要修改抽象工廠和所有的具體工廠類(lèi),對(duì)“開(kāi)閉原則”的支持呈現(xiàn)傾斜性。(不過(guò)說(shuō)這個(gè)缺點(diǎn)好像有點(diǎn)吹毛求疵了)
