สคริปต์ยูทิลิตี้ที่ยืดหยุ่นสำหรับ AJAX รองรับตัวอย่าง การเปลี่ยนเส้นทาง ฯลฯ
เอ็มไอที
เจคิวรี 1.7
nette.ajax.js ไปยังไดเร็กทอรีของคุณด้วยไฟล์ Javascript (คุณสามารถใช้ Bower ได้)app/@layout.latte หลังจาก jQuery!) $ ( function ( ) {
$ . nette . init ( ) ;
} ) ; ตามค่าเริ่มต้น ลิงก์และแบบฟอร์มทั้งหมดที่มีคลาส CSS ajax จะถูก ajaxified ทันที พฤติกรรมสามารถเปลี่ยนแปลงได้ในการกำหนดค่าส่วนขยาย init วัตถุที่ส่งคืนโดยการเรียก var init = $.nette.ext('init'); มีอุปกรณ์ประกอบฉากเหล่านี้:
| ชื่อ | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|
linkSelector | a.ajax | ตัวเลือก CSS สำหรับลิงก์ |
formSelector | form.ajax | ตัวเลือก CSS สำหรับแบบฟอร์ม |
buttonSelector | input.ajax[type="submit"], input.ajax[type="image"] | ตัวเลือก CSS สำหรับองค์ประกอบแบบฟอร์มที่รับผิดชอบในการส่ง |
Ajaxification เชื่อมโยงกับเหตุการณ์ click ( submit ) ในเนมสเปซ nette Ajaxification ของลิงก์เฉพาะสามารถยกเลิกได้ด้วยโค้ดเช่นนี้ (ในขณะที่การโทรกลับอื่น ๆ จะยังคงอยู่):
$ ( 'a.no-ajax' ) . off ( 'click.nette' ) ;หรือง่ายกว่านั้น:
$ ( 'a.no-ajax' ) . netteAjaxOff ( ) ; Ajaxification ครอบคลุมการเรียก $.ajax() แบบมาตรฐานและขยายออกไปด้วยเหตุการณ์ต่างๆ มากมาย ซึ่งสามารถเชื่อมโยงกับการโทรกลับแบบกำหนดเองได้ ชุดของการเรียกกลับที่เกี่ยวข้องเรียกว่า ส่วนขยาย การประมวลผลตัวอย่างความสามารถในการยกเลิกคำขอที่ทำงานอยู่โดย Escape ... ฟังก์ชันทั้งหมดนี้ถูกนำมาใช้ในรูปแบบของส่วนขยาย การลงทะเบียนส่วนขยายมีลักษณะดังนี้:
$ . nette . ext ( 'name' , {
event1 : function ( ) {
} ,
event2 : ...
} , {
// ... shared context (this) of all callbacks
} ) ;อาร์กิวเมนต์แรกคือชื่อ มันเป็นทางเลือก
อาร์กิวเมนต์ที่สองควรเป็นแฮชของการโทรกลับพร้อมคีย์ที่สอดคล้องกับชื่อของเหตุการณ์ กิจกรรมเหล่านี้มีอยู่:
| ชื่อ | ข้อโต้แย้ง | คำอธิบาย |
|---|---|---|
init | โทรมาเพียงครั้งเดียวในช่วง $.nette.init(); เรียก. | |
load | requestHandler | ควรมีอะแจ็กซิฟิเคชัน requestHandler สามารถเชื่อมโยงกับเหตุการณ์ UI เพื่อเริ่มต้นคำขอ AJAX |
before | jqXHR settings | ถูกเรียกทันทีก่อนที่จะดำเนินการคำขอ AJAX หากส่งคืน FALSE คำขอจะไม่เริ่มต้น |
start | jqXHR settings | ถูกเรียกทันทีหลังจากเริ่มต้นคำขอ AJAX |
success | payload , status , jqXHR , settings | ถูกเรียกหลังจากคำขอ AJAX เสร็จสมบูรณ์ เทียบเท่ากับ $.ajax( ... ).done( ... . |
complete | jqXHR , status , settings | ถูกเรียกหลังจากคำขอ AJAX เสร็จสิ้นทุกครั้ง เทียบเท่ากับ $.ajax( ... ).always( ... . |
error | jqXHR , status , error , settings | ถูกเรียกในกรณีที่คำขอ AJAX ล้มเหลว เทียบเท่ากับ $.ajax( ... ).fail( ... . |
ส่วนขยายสามารถปิดใช้งานได้:
$ . nette . ext ( 'name' , null ) ;สามารถกำหนดค่าส่วนขยายได้ บริบทสามารถรับได้โดย:
var context = $ . nette . ext ( 'name' ) ; | ชื่อ | คำอธิบาย |
|---|---|
validation | จำกัด ajaxification ให้คลิก/ส่งโดยไม่ต้องใช้ปุ่ม Ctrl , Alt หรือ Shift , ลิงก์ในเครื่อง และการส่งแบบฟอร์มที่ถูกต้อง |
forms | เพิ่มการรองรับการส่งแบบฟอร์มพร้อมข้อมูลทั้งหมด ชื่อของปุ่มที่คลิก และพิกัดของการคลิกในอินพุต [type=image] |
snippets | อัปเดต DOM ด้วยอาร์เรย์ snippets เพื่อตอบสนอง (การจัดการ Nette เริ่มต้นของตัวอย่าง Latte) |
redirect | ดำเนินการเปลี่ยนเส้นทางไปยัง URL อื่น (เมื่อ $this->redirect() ถูกเรียกในพรีเซนเตอร์) สามารถแทนที่ได้ด้วยการขยาย history |
unique | ช่วยให้คำขอทำงานในเวลาเดียวกันเท่านั้น |
abort | อนุญาตให้ผู้ใช้ยกเลิกการร้องขอโดยการกด Escape |
init | ajaxification เริ่มต้น |
คุณสมบัติพิเศษทั้งหมดนี้คาดว่าจะเปิดส่วนขยายเริ่มต้นทั้งหมดไว้
data-ajax-off ลิงก์หรือองค์ประกอบ ajaxified อื่น ๆ สามารถมีแอตทริบิวต์ข้อมูลที่กำหนดเอง data-ajax-off ประกอบด้วยชื่อของส่วนขยายที่ควรปิดการใช้งานสำหรับคำขอ Ajax ที่เริ่มทำงานในองค์ประกอบ
< a n:href =" do! " class =" ajax " data-ajax-off =" snippets " > $.nette.ajax() คุณยังสามารถใช้มันใน แบบนี้:
$ . nette . ajax ( {
url : ... ,
off : [ 'snippets' ]
} ) ;data-ajax-pass (ในส่วนขยาย validation ) Ajaxification ขององค์ประกอบทำให้มั่นใจได้ว่า e.preventDefault() จะถูกเรียก คุณลักษณะนี้สามารถป้องกันได้ หากคุณต้องการให้มีการเรียกกลับเพิ่มเติม
data-ajax-append (ในส่วนขยาย snippets )เนื้อหาใหม่ของตัวอย่างข้อมูลที่มีแอตทริบิวต์นี้จะไม่แทนที่เนื้อหาเก่า แต่จะถูกผนวกเข้ากับเนื้อหานั้นแทน
data-ajax-prepend (ในส่วนขยาย snippets )เนื้อหาใหม่ของตัวอย่างข้อมูลที่มีแอตทริบิวต์นี้จะไม่แทนที่เนื้อหาเก่า แต่จะถูกเติมไว้หน้าเนื้อหานั้นแทน
data-ajax-validate (ในส่วนขยาย validation )คลิกที่ลิงค์หรือส่งแบบฟอร์มผ่านการตรวจสอบเงื่อนไขต่างๆ คุณสามารถเปลี่ยนรายการใดก็ได้:
< a n:href =" do! " class =" ajax " data-ajax-validate =' {"keys":false} ' > และในกรณีของ data-ajax-off คุณสามารถส่งผ่านเข้าไปใน $.nette.ajax() ได้โดยตรง
$ . nette . ajax ( {
url : ... ,
validate : {
keys : false
}
} ) ;ซึ่งหมายความว่าการคลิกลิงก์ด้วย Ctrl จะไม่เปิดแท็บใหม่ แต่จะ ajaxify คำขอ
ในกรณีที่มีการเรียกกลับ คุณสามารถเรียก this.ext() เพื่อรับบริบทของส่วนขยายอื่นๆ หากคุณเพิ่ม true เป็นอาร์กิวเมนต์ที่สอง สคริปต์จะล้มเหลวหากไม่มีส่วนขยายนั้น
$ . nette . ext ( {
success : function ( payload ) {
var snippets = this . ext ( 'snippets' , true ) ;
...
}
} ) ;