2015-06-02 18 views
14

Tôi có một tùy chọn nút HTML như sau,Enable Disable nút/từ bộ điều khiển trên 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> 

Không có ng-disable tùy chọn trong tùy chọn nút bên trên. Có thể bật/tắt nút này bằng buttonId trên bộ điều khiển không? Ngoài ra, tôi không muốn thêm tùy chọn vô hiệu hóa trên chế độ xem HTML. Thay vào đó, tôi muốn kiểm soát nó thông qua các tập lệnh. Điều này có thể không?

+2

Lý do cụ thể nào để không sử dụng 'ng-disabled'? – Zee

+0

@Zee yesm vì đầu vào của tôi chính xác như trên. gọi định dạng nút ở trên cho tất cả các nút trong ứng dụng của tôi. – Pez

+0

Tại sao bạn bao gồm 'ng-class =" {'primaryButton': true} "' ... 'primaryButton' sẽ luôn là một lớp được áp dụng cho nút trong trường hợp này và, quan trọng hơn, nó đã là một phần của Thuộc tính 'class' – Kabb5

Trả lời

13

Bạn đã xem xét ngDisable chưa? Bạn có thể có một ngModel và thay đổi nó từ bộ điều khiển. Như ví dụ tài liệu nói ở đây:

<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> 

Và JS:

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

Sử dụng ng-disabled là thực hành tốt nhất để bật/tắt một nút, nhưng bạn cũng có thể đạt được nó trong bộ điều khiển mà không cần thêm disabled tài sản để chế độ xem HTML của bạn với kịch bản này,

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

Trong trường hợp của bạn,

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

Plunker

Hope this helps!

+2

Sẽ không có tác dụng đối với tôi, điều này khiến tôi khó chịu vì nó hoạt động trên Plunker. Nhìn vào tài liệu angular.element -" Nếu jQuery có sẵn, angular.element là một bí danh cho hàm jQuery. Nếu jQuery không có sẵn, các đại biểu angular.element đến tập hợp con được xây dựng sẵn của Angular của jQuery, được gọi là "jQuery lite" hoặc "jqLite". Vì vậy, đối với những người không sử dụng JQuery, .disable không phải là một phương thức trong jqLite. Những gì làm việc cho tôi là .attr ('disabled', true) bởi vì .attr() là một phương thức trong jqLite, – memo

Các vấn đề liên quan