Rumah > Soal Jawab > teks badan
漂亮男人2017-05-15 16:55:10
Sebenarnya ini adalah masalah yang mungkin menjadi sangat rumit Terdapat banyak penyelesaian dalam realiti saya akan menulis rujukan yang paling mudah:
javascript
// 在某一个 controller 里: function DemoController() { var vm = this // 用了 "controller as" 语法的时候会这样写,vm 代表 viewModel vm.listItems = [] // 初始化一个数组用于保存将要生成的 li vm.listItem = '' // 用于绑定 input;不声明其实也可以,这里是为了让你看清楚 // 绑定在 input 上的方法,把新的 listItem 加入数组,然后重置它 vm.addItem = function() { vm.listItems.push(vm.listItem) vm.listItem = '' } // 绑定在 li 上的方法,接受 $event 参数,你可以利用它获取当前被点击的 li vm.itemClickHandler = function(event) { var currentElement = event.target // ... } }
Kemudian dalam templat yang sepadan:
html
<input ng-model="vm.listItem"> <button ng-click="vm.addItem()">添加</button> <ul> <li ng-repeat="item in vm.listItem" ng-click="vm.itemClickHandler($event)">{{item}}</li> </ul>
Ini adalah idea Terdapat terlalu banyak faktor pembolehubah dalam realiti, jadi sukar untuk menghuraikannya satu demi satu. Perkara utama yang perlu dipertimbangkan semasa menangani masalah yang sama adalah seperti berikut:
input
apabila ditambah, tetapi ini bukan cara sudut ditulis, ini adalah cara jQuery ditulis $event
objek, kerana ia membuatkan saya terpaksa mencampurkan DOM atau kod berkaitan Acara dalam controller
dan bukannya logik perniagaan. Sudah tentu terdapat banyak penyelesaian, seperti: listItem.text
menyimpan kandungan teks, dan kemudian menjana kenaikan listItem.id
untuk kandungan teks itu apabila ditambahkan. Terdapat banyak kelebihan untuk melakukan ini. Contohnya, apabila ng-repeat
, anda boleh menggunakan track by
dan output templat kawalan akan menjadi lebih fleksibel Kaedah pemprosesan peristiwa terikat boleh melepasi $event
atau item
dan bukannya item.id
. Tungguphpcn_u15822017-05-15 16:55:10
Untuk HTML yang dimasukkan secara dinamik, yang mengandungi parameter ng, angularjs biasanya tidak menghuraikannya dua kali.
Anda boleh menggunakan suntikan kebergantungan untuk memanggil $compile untuk menulis semula dan menyusun kod tempatan.