2015-06-02 17 views
14

mam opcję przycisk Kopiuj jako Poniżejprzycisk Włącz/Wyłącz ze sterownika na angularjs

<button ng-class="{'primaryButton':true}" type="button" id="modalCreateBtn" "ng-hide="false" class="btn btn-group mm-btn-save primaryButton" ng-click="addSegments()">CREATE</button> 

Nie ma ng-disable opcja w powyższej opcji przycisku. Czy można włączyć/wyłączyć przycisk za pomocą przycisku ID na kontrolerze? Ponadto nie chcę dodawać opcji wyłączania w widoku HTML. Zamiast tego chcę kontrolować go za pomocą skryptów. czy to możliwe?

+2

Jakiś konkretny powód nie używania 'ng-disabled'? – Zee

+0

@Zee yesm ponieważ moje dane wejściowe są dokładnie takie same jak powyżej. Wywołanie powyższego formatu przycisku dla wszystkich przycisków w mojej aplikacji. – Pez

+0

Dlaczego dodajesz 'ng-class =" {'primaryButton': true} "' ... "primaryButton' zawsze będzie klasą zastosowaną do przycisku w tym przypadku i, co ważniejsze, jest już częścią 'class' atrybut – Kabb5

Odpowiedz

13

Czy przejrzałeś ngDisable? Możesz mieć ngModel i zmienić go z kontrolera. Jak przykład dokumentacja mówi tutaj:

<span ng-controller="MyController as myController"> 
    <label>Click me to toggle: <input type="checkbox" ng-model="myController.checked"></label><br/> 
    <button ng-model="button" ng-disabled="myController.checked">Button</button> 
</span> 

a JS:

angular.module('controllerAsExample', []) 
    .controller('MyController ', function(){ 
     this.checked = false; 
// this.checked = true; 
    }); 
11

Korzystanie ng-disabled jest najlepszą praktyką jest włączanie/wyłączanie przycisku, ale można również osiągnąć go w sterowniku bez dodawania disabled nieruchomość do widoku HTML z tych skryptów,

angular.element(document.getElementById('yourButtonId'))[0].disabled = true;

W twoim przypadku,

angular.element(document.getElementById('modalCreateBtn'))[0].disabled = true;

Plunker

Nadzieja to pomaga!

+2

Nie zadziałałby dla mnie, co było kłopotliwe, ponieważ działa na Plunkera.Spojrzałem na dokumentację kątową.element -" Jeśli jQuery jest dostępny, angular.element to alias dla funkcji jQuery. Jeśli jQuery nie jest dostępny, angular.element deleguje do wbudowanego podzbioru jQuery Angular, o nazwie "jQuery lite" lub "jqLite". Tak więc dla osób, które nie używają JQuery, .disable nie jest metodą w jqLite. Dla mnie działało .attr ("wyłączone", prawda), ponieważ .attr() jest metodą w jqLite, – memo

Powiązane problemy