การเชื่อมโยง AngularJS ไม่ทำงานเมื่อมีการเปลี่ยนแปลงแอตทริบิวต์

ฉันได้สร้างคำสั่งซึ่งมีขอบเขตแยก:

.directive('title',function(){
    return {
        restrict:'E',
        scope:{
            text:'@'
        },
        replace:true,
        template:'<div>{{text}}</div>',
        link:function(scope,iElement,iAttrs){
        }
    };
})

เมื่อฉันพยายามเปลี่ยนแอตทริบิวต์ "text" ด้วยวิธี .attr การเชื่อมโยงไม่ทำงาน ฉันได้ลองใช้วิธี $apply แล้ว แต่ก็ไม่ประสบผลสำเร็จ

เกิดอะไรขึ้น?

JSFiddle

PS: กรุณาอย่าแนะนำวิธีแก้ปัญหาใด ๆ ด้วยการใช้คอนโทรลเลอร์และเชื่อมโยงแอตทริบิวต์ text กับคุณสมบัติของ $scope (บางอย่างเช่น <title text="{{somepropertyincontrollersscope}}">...) ปัญหาของฉันคือ เท่านั้น ที่เกี่ยวข้องกับการเปลี่ยนแปลงแอตทริบิวต์ ภายนอก


person Engineer    schedule 03.04.2014    source แหล่งที่มา


คำตอบ (1)


ฉันคิดว่าคุณจะต้องทำในฟังก์ชัน link โดยดูค่าของแอตทริบิวต์:

scope.$watch(function () {
    return iElement.attr("text");
}, function (newVal) {
    scope.text = newVal;
});

นี่คือซอที่อัปเดต

person James Allardice    schedule 03.04.2014