2016-05-15 4 views
2

Ich ändere die Klasse einer Schaltfläche, einer Schaltfläche Gruppe, mit Javascript innerhalb der eckigen Direktive.Aktualisierung dom aus Javascript innerhalb angularjs

Mein Update ist korrekt. Aber die Änderung spiegelt sich nicht auf dem Bildschirm wider, bis ich irgendwo auf der Seite klicke.

angular.module('test', []). 
directive('selected', function() { 
    return { 
    link: selectedLinker, 
    restrict: 'A', 
    replace: false 
    } 

    function selectedLinker(scope, element, attribute) { 
    var groupname = attribute.selected; 
    groupname = 'groupname'; 
    element.bind('click', function() { 
     var elements = document.querySelectorAll('[selected=' + groupname + ']'); 
     for(var i=0; i<elements.length; i++) { 
     var item = elements[i]; 
     item.classList.remove('selected'); 
     } 
     this.classList.add('selected'); 
     //element.addClass('selected'); 
    }) 
    } 
}); 

Was bin ich hier fehlt. Ich möchte nicht jquery verwenden. Vielen Dank.

Pluker Link

+1

nichts mit eckigen zu tun ... hat mit bootstrap ': focus' css selector zu tun. Überprüfen Sie das Element in den Browser-Entwicklungstools und sehen Sie sich die CSS-Regeln an, die ... gelten. Der Selektor ': focus' wird als Teil derselben Regel für' .selected' angezeigt. – charlietfl

+0

Vielen Dank. Ich habe es funktioniert. – jsbisht

Antwort

1

versuchen, dies zu Ihrem CSS hinzufügen:

.btn:focus { 
     background-color: inherit !important; 
     color: inherit !important; 
    } 
1

hinzufügen this.blur() nach this.classList.add('selected'); in Link-Funktion Ihrer Richtlinie ist die Bootstrap-CSS-Eigenschaften aufgrund der Taste im Fokus sein werden klar angewandt.