Pengikatan AngularJS tidak berfungsi, ketika atribut diubah

Saya telah membuat arahan, yang memiliki cakupan terisolasi:

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

Saat saya mencoba mengubah atribut "text" dengan metode .attr, pengikatannya tidak berfungsi. Saya telah mencoba menggunakan metode $apply, tetapi tidak berhasil.

Apa yang salah?

JSFiddle

PS: Tolong, jangan menyarankan solusi apa pun dengan menggunakan pengontrol dan mengikat atribut text ke properti $scope (seperti <title text="{{somepropertyincontrollersscope}}">...). Masalah saya hanya terkait dengan perubahan atribut secara eksternal.


person Engineer    schedule 03.04.2014    source sumber


Jawaban (1)


Saya pikir Anda harus melakukannya di fungsi link dengan memperhatikan nilai atribut:

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

Ini biola yang diperbarui.

person James Allardice    schedule 03.04.2014