2013-09-25 43 views
11

Khi tôi sử dụng nút kiểm tra = "checked" ng-model sẽ không cho nút radio được chọn theo mặc định. Có ai biết nguyên nhân của vấn đề này là gì không?ng-model prevent checked = "checked" để chọn nút radio theo mặc định

<input type="radio" name="unitMiles" checked="checked" id="unitMiles" value="Miles" ng-model="unit" ng-change='nextActivityStep(3)'> 
+3

Bạn đã thử sử dụng 'ngChecked' - http://docs.angularjs.org/api/ng.directive:ngChecked – tymeJV

+0

@tymeJV - làm cho câu trả lời đó trở thành một câu trả lời. Đúng. – Benmj

Trả lời

15

Bạn nên sử dụng chỉ thị ngChecked đi kèm với Góc.

Đốc: http://docs.angularjs.org/api/ng.directive:ngChecked

+3

Điều này có thể đã thay đổi trong hai năm kể từ khi đăng bài, nhưng việc sử dụng ngChecked và ngModel trên cùng một phần tử thường không được thực hiện. Bây giờ bạn có hai chỉ thị cạnh tranh để kiểm soát giá trị của phần tử. Các tài liệu cũng khuyên bạn nên chống lại điều này (xem liên kết trong câu trả lời): "Lưu ý rằng chỉ thị này không nên được sử dụng cùng với ngModel, vì điều này có thể dẫn đến hành vi bất ngờ." –

5

Bạn có thể thiết lập mô hình của bạn với giá trị của đầu vào của bạn ($scope.unit = "Miles" trong trường hợp) hoặc sử dụng ng-checked="true" ở đầu vào của bạn.

2

Như tôi đã nhận xét về câu trả lời được chấp nhận (như các văn bản), các chỉ thị ngChecked và ngModel không nên được sử dụng trên cùng một nguyên tố.

Nếu bạn đang sử dụng ngModel, thì trạng thái đã chọn của đầu vào chỉ là sự phản ánh của mô hình. Để đặt đầu vào radio của bạn thành true theo mặc định, chỉ cần đặt mô hình cho phù hợp.

Sử dụng mã từ OP, trong đó giá trị là 'miles' và kiểu là units và giả định đây là các biến phạm vi, bạn sẽ làm điều gì đó dọc theo các dòng $scope.units = 'miles' trong bộ điều khiển được liên kết (hoặc bất kỳ vị trí nào).