เชิงมุม
เมื่อเชิงมุมตั้งค่าการเชื่อมโยงฐานข้อมูล "ผู้เฝ้าดู" สองคน (นี่คือการทำให้เข้าใจง่าย)
//js
$scope.name = 'test';
$timeout(function() { $scope.name = 'another' }, 1000);
$timeout(function() { console.log($scope.name); }, 5000);
<!-- html --->
<input ng-model="name" />
อินพุตจะเริ่มต้นด้วยtest
จากนั้นอัปเดตเป็นanother
1000ms การเปลี่ยนแปลงใด ๆ$scope.name
จากโค้ดคอนโทรลเลอร์หรือโดยการเปลี่ยนอินพุตจะแสดงในบันทึกคอนโซล 4000ms ในภายหลัง การเปลี่ยนแปลง<input />
จะแสดงใน$scope.name
คุณสมบัติโดยอัตโนมัติเนื่องจากการng-model
ตั้งค่าจะเฝ้าดูอินพุตและแจ้ง$scope
การเปลี่ยนแปลง การเปลี่ยนแปลงจากรหัสและการเปลี่ยนแปลงจาก HTML มีสองทางที่มีผลผูกพัน (ตรวจสอบซอนี้ )
ตอบสนอง
การตอบสนองไม่มีกลไกที่อนุญาตให้ HTML เปลี่ยนองค์ประกอบได้ HTML สามารถเพิ่มเหตุการณ์ที่คอมโพเนนต์ตอบสนองเท่านั้น ตัวอย่างทั่วไปคือการใช้onChange
.
//js
render() {
return <input value={this.state.value} onChange={this.handleChange} />
}
handleChange(e) {
this.setState({value: e.target.value});
}
ค่าของ<input />
ถูกควบคุมทั้งหมดโดยrender
ฟังก์ชั่น วิธีเดียวที่จะปรับปรุงค่านี้มาจากองค์ประกอบของตัวเองซึ่งจะกระทำโดยการแนบonChange
เหตุการณ์ไป<input />
ซึ่งชุดที่จะตอบสนองกับวิธีส่วนประกอบthis.state.value
ไม่ได้มีการเข้าถึงโดยตรงไปยังรัฐส่วนประกอบและดังนั้นจึงไม่สามารถทำให้เกิดการเปลี่ยนแปลง นี่คือทางเดียวที่มีผลผูกพัน (ตรวจสอบนี้codepen )setState
<input />