แอตทริบิวต์ขอบเขตคำสั่งแบ่งขึ้นอยู่กับชื่อแอตทริบิวต์

ฉันมีปรากฏการณ์ที่แปลกประหลาดมากกับคำสั่งและขอบเขตที่แยกจากกัน โดยที่คุณลักษณะในขอบเขตจะทำงานหรือไม่ทำงาน ขึ้นอยู่กับการตั้งชื่อแอตทริบิวต์ ถ้าฉันใช้

{check:'@check'}

มันใช้งานได้ดีและเป็นไปตามที่คาดไว้ อย่างไรก็ตามถ้าฉันใช้:

{checkN:'@checkN'}

ฟังก์ชันที่กำหนดไว้ไม่เคยได้รับมอบหมาย ตัวอย่างจะมีลักษณะดังนี้:

HTML:

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

จาวาสคริปต์

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())          
      }
    }
});

คอนโซลจะให้สิ่งต่อไปนี้แก่ฉัน:

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

เป็นไปได้จริง ๆ ไหมว่ามันขึ้นอยู่กับการใช้ตัวพิมพ์ใหญ่? นี่จะเป็นพฤติกรรมที่ "ไม่คาดคิด" อย่างมาก

ขอบคุณสำหรับความช่วยเหลือของคุณ

สชากี


person schacki    schedule 27.03.2013    source แหล่งที่มา
comment
คำสั่งมีชื่อแบบอูฐ เช่น ngBind คำสั่งสามารถเรียกใช้ได้โดยการแปลชื่อกรณีอูฐเป็นกรณีงูด้วยอักขระพิเศษเหล่านี้ :, - หรือ _ นอกจากนี้ คำสั่งยังสามารถเติมคำนำหน้าด้วย x- หรือ data- เพื่อให้เป็นไปตามข้อกำหนดของเครื่องมือตรวจสอบ HTML -- หน้าคำสั่ง การเรียกใช้คำสั่งจาก HTML   -  person Mark Rajcok    schedule 27.03.2013


คำตอบ (1)


Html ไม่คำนึงถึงขนาดตัวพิมพ์ ดังนั้น myAttribute และ myattribute จึงแยกไม่ออกจากกัน ขึ้นอยู่กับเบราว์เซอร์ ผู้เขียนของ Angularjs ตัดสินใจออกแบบเกี่ยวกับการส่งผ่านจาก html ไปเป็น javascript และในทางกลับกันในแง่ของคำสั่ง

ngRepeat คำสั่งจะถูกใช้เป็น ng-repeat ในมุมมอง (html) ในทำนองเดียวกัน คำสั่ง checkN ของคุณควรใช้เป็น check-n เพื่อให้เชิงมุมรับรู้ว่าเป็นคำสั่ง

person Umur Kontacı    schedule 27.03.2013
comment
ขอบคุณมากสำหรับคำตอบ ทีมงานเชิงมุมได้บันทึกไว้อย่างชัดเจนสำหรับคำสั่ง แต่ตามเอกสาร ฉันไม่ได้คาดหวังพฤติกรรมแบบเดียวกันที่นี่ - person schacki; 28.03.2013
comment
@shacki แน่นอน -- ในกรณีของฉัน ฉันมีชื่อแอตทริบิวต์ที่ขึ้นต้นด้วยตัวย่อ -- เช่น DNSHost=myhost และ Angular เพิกเฉยต่อสิ่งเหล่านั้น โดยไม่มีการแปลที่เป็นไปได้ เอกสารไม่ได้พูดอะไรเกี่ยวกับเรื่องนั้น เสียเวลาไป 2 ชั่วโมง :( - person Jordan Rieger; 03.10.2015