Atribut cakupan direktif rusak tergantung pada nama atribut

Saya memiliki fenomena yang sangat aneh dengan arahan dan cakupan yang terisolasi, di mana atribut dalam cakupan berfungsi atau tidak berfungsi tergantung pada penamaan atribut. Jika saya menggunakan

{check:'@check'}

itu berfungsi dengan baik dan seperti yang diharapkan. Namun, jika saya menggunakan:

{checkN:'@checkN'}

fungsi yang ditentukan tidak pernah ditetapkan. Contohnya akan terlihat seperti:

HTML:

<item ng-repeat="list_item in model.list" model="list_item" checkN="checkName()" check="checkName()" position="$index"></item>'

Javascript

app.directive('item', function(){
   return {
      restrict: 'E',
      replace : false,   
      scope:{
              $index: '=position',
              check: '&check',
              checkN: '&checkN',
              model:'='
      },          
      template: '',
      link: function(scope, element, attrs){
        console.log(scope.check())
        console.log(scope.checkN())          
      }
    }
});

Konsol kemudian akan memberi saya yang berikut:

The checkName function has been called [which is the return string of the function]
undefined

Mungkinkah itu tergantung penggunaan huruf kapital? Ini akan menjadi perilaku yang sangat "tidak terduga".

Terima kasih atas bantuan Anda

schacki


person schacki    schedule 27.03.2013    source sumber
comment
Petunjuk memiliki nama dengan huruf unta seperti ngBind. Direktif dapat dijalankan dengan menerjemahkan nama case camel menjadi case ular dengan karakter khusus ini :, -, atau _. Secara opsional, arahan dapat diawali dengan x-, atau data- agar sesuai dengan validator HTML. -- Bagian Halaman arahan Meminta arahan dari HTML   -  person Mark Rajcok    schedule 27.03.2013


Jawaban (1)


Html tidak peka huruf besar-kecil, oleh karena itu myAttribute dan myattribute tidak dapat dibedakan satu sama lain bergantung pada browser. Penulis Angularjs membuat keputusan desain tentang meneruskan dari html ke javascript dan sebaliknya dalam hal arahan.

Direktif ngRepeat akan digunakan sebagai ng-repeat dalam tampilan (html). Demikian pula, arahan Anda checkN harus digunakan sebagai check-n agar sudut dapat mengenalinya sebagai arahan.

person Umur Kontacı    schedule 27.03.2013
comment
Terima kasih banyak atas jawabannya. Tim sudut telah mendokumentasikannya dengan jelas untuk arahan. Namun setelah mengikuti dokumen, saya tidak mengharapkan perilaku yang sama di sini. - person schacki; 28.03.2013
comment
@schacki Tepat -- dalam kasus saya, saya memiliki nama atribut yang dimulai dengan akronim -- mis. DNSHost=myhost, dan Angular diam-diam mengabaikannya tanpa kemungkinan terjemahan apa pun. Dokumentasi tidak menjelaskan apa pun tentang itu. Hanya terbuang 2 jam :( - person Jordan Rieger; 03.10.2015