HTML部分
<index></index>
指令
angular.module('todoWithAngularApp').directive('index', function () {
return {
restrict: 'E',
templateUrl: '/scripts/template/index.html',
replace: true,
link: function (scope, iElement, iAttrs) {
console.log(scope);
console.log(iElement);
console.log(iAttrs);
iElement.on('click', '#addTaskClass', function(event) {
scope.addTaskClassBoxDisplay = true;
console.log(scope.addTaskClassBoxDisplay);
})
}
};
控制器
angular.module('todoWithAngularApp').controller('IndexCtrl', function ($scope) {
$scope.addTaskClassBoxDisplay = false;
});
怎样才能让指令去修改控制器上的$scope的属性
Tidak bertanggungjawab dan tidak disahkan, berikut adalah beberapa idea:
1. Letakkan addTaskClassBoxDisplay di bawah objek, seperti
scope.obj.addTaskClassBoxDisplay = benar
2. Gunakan mesej
3. Gunakan perkhidmatan
Tiga kaedah di atas juga merupakan cara biasa untuk berkongsi data antara modul Sudut dan boleh disesuaikan dengan senario yang berbeza.
http://stackoverflow.com/questions/14115701/angularjs-create-a-directi...
Mula-mula buka skop bebas dan gunakan ‘=’ untuk melakukan pengikatan dua hala pada objek skop Seperti dalam contoh di bawah, obj arahan diikat dan dihantar ke objek addTaskClassBoxDisplay
Sebelum anda bertanya soalan ini, izinkan saya membetulkan soalan itu.
Anda ingin mengubah suai $skop pengawal. Pertama sekali, arahan yang anda tentukan sendiri ialah skop dalam pengawal. Ia tidak mewarisi atau mencipta skop yang berasingan. Jadi, jika anda mengubah suai atribut di bawah skop arahan anda, anda pasti akan mengubah suai atribut sepadan skop pengawal yang merujuk arahan ini.
Anda mungkin bertanya, mengapa saya tidak mengubah suai skop pengawal semasa saya menulisnya?
Sebabnya ialah anda menggunakan
iElement.on('klik', '#addTaskClass', fungsi(acara) {
scope.addTaskClassBoxDisplay = benar;
Pendengar klik yang anda tentukan sendiri mencetuskan pengubahsuaian atribut skop dan ia tidak akan memberitahu Angular untuk melakukan semakan kotor. Dalam erti kata lain, jika anda mengubah suai addTaskClassBoxDisplay, ia tidak akan bertindak balas pada halaman.
Bagaimana untuk membetulkan ralat ini. Hanya tambah $apply(). Cetuskan pemeriksaan kotor secara manual. Bagaimana cara menggunakannya? Tanya Baidu sendiri.
Sekarang kembali kepada soalan anda. Bagaimana untuk membiarkan arahan mengubah suai skop pengawal.
1. Mari kita mulakan dengan atribut dalaman arahan.
Atribut skop arahan, tiga kaedahnya boleh mengubah suai skop pengawal.
1.skop tidak ditakrifkan atau skop:salah. Ia menggunakan skop pengawal secara langsung
2. skop: benar. Ia adalah skop yang mewarisi pengawal. Pada masa ini, kandungan yang anda ingin ubah suai ditakrifkan sebagai objek.
3. skop: {key:'=key'}. Ia adalah skop bebas. Kaedah pengubahsuaian adalah sama seperti di atas, lebih baik untuk mentakrifkannya sebagai objek
Kemudian beritahu yang lain. Menggunakan iAttrs, takrifkannya sebagai atribut pada arahan.
model var = $parse(iAttrs.addTaskClassBoxDisplay);
iElement.on('klik', '#addTaskClass', fungsi(acara) {
model.assign(skop,benar);
skop.$apply();
2. Gunakan radio. Khususnya Baidu.
3. Gunakan perkhidmatan untuk menghantar.
4. Arahan memanggil $rootScope dan kemudian menjadikan atribut skop pengawal sama dengan atribut $rootScope. (Jangan sekali-kali melakukan ini)
Sudah tiba masanya untuk pergi bekerja, jadi anda boleh menggunakan Baidu kemudian.
http://www.hubwiz.com/course/54f3ba65e564e50cfccbad4b/
Asas: http://www.hubwiz.com/course/547c3e3b88dba0087c55b4e5/
Soalan yang sangat bagus, saya nak tanya juga