2013-07-26 24 views
11

Tôi hy vọng mã sau đây sẽ hiển thị danh sách thả xuống với tùy chọn thứ ba được chọn theo mặc định. Tuy nhiên, khi tôi liên kết lựa chọn với angularjs, lựa chọn mặc định biến mất. Bất cứ suy nghĩ nào?AngularJs và <select>: Các tùy chọn được chọn mặc định sẽ bị xóa

var myApp = angular.module('myApp', []); 

... 

<div> 
    <select id="myselection" ng-model="selectedColors"> 
    <option value="1" >Red</option> 
    <option value="2">Blue</option> 
    <option value="3" selected="selected">Green</option> 
    </select> 

    <div> 
    Selected Colors: {{selectedColors }} 
    </div> 
</div> 

Dưới đây là một ví dụ làm việc: http://jsfiddle.net/TXPJZ/134/

Cảm ơn!

Trả lời

21

Cách dễ nhất để sửa lỗi triển khai của bạn là sử dụng ng-init.

<div> 
    <select id="myselection" ng-init="selectedColors=3" ng-model="selectedColors"> 
     <option value="1">Red</option> 
     <option value="2">Blue</option> 
     <option value="3">Green</option> 
    </select> 
    <div>Selected Colors: {{selectedColors }}</div> 
</div> 

Dùng thử trên FIDDLE.

+4

lẽ hiển nhiên, nhưng vì nó bắt tôi ra, hãy nhớ kèm theo giá trị ng-init trong dấu nháy đơn nếu một chuỗi của nó, ví dụ: ng-init = "selectedColors = 'red'" – Steve

+0

, điều này không hoạt động khi bạn đang điền vào lựa chọn bằng cách sử dụng 'ng-options =" ​​row.desc cho hàng trong một ffiliationTable "' vì tôi không biết cách gán giá trị khi thực hiện theo cách đó, bạn có biết cách tôi có thể làm điều đó không? – pythonian29033

+1

[tài liệu chính thức cho ng-init] (http://docs.angularjs.org/api/ng.directive:ngInit) nêu rõ những điều sau đây: _ "Chỉ sử dụng ngInit thích hợp để đánh dấu các thuộc tính đặc biệt của ngRepeat, như đã thấy trong bản demo bên dưới, ngoài trường hợp này, bạn nên sử dụng bộ điều khiển thay vì ngInit để khởi tạo các giá trị trên một phạm vi. "_. Có cách nào khác để loại bỏ de 'mặc định' giá trị? – JPCF

9

Góc ghi đè thuộc tính "đã chọn" khi bạn liên kết lựa chọn với mô hình. Nếu bạn kiểm tra DOM được hiển thị, bạn sẽ thấy rằng một mục mới đã được thêm vào:

<option value="? undefined:undefined ?"></option> 

Để tự động chọn tùy chọn thứ ba bạn cần điền trước mô hình trong phạm vi. Có một số cách để thực hiện việc này, bao gồm cả việc chọn lựa trong bộ điều khiển:

<div ng-controller="MyCtrl"> 
    <select id="myselection" ng-model="selectedColors"> 
     <option value="1">Red</option> 
     <option value="2">Blue</option> 
     <option value="3">Green</option> 
    </select> 
<div>Selected Colors: {{selectedColors }}</div> 

Và sau đó xác định mô hình đó trong bộ điều khiển.

var myApp = angular.module('myApp', []) 
    .controller('MyCtrl', ['$scope', function ($scope) { 
    $scope.selectedColors = 2; 
}]); 

Đây là ví dụ đang chạy.

http://jsfiddle.net/93926/

Ngoài ra, bạn có thể chỉ cần khởi tạo nó bằng cách sử ng-init như trong ví dụ này:

<div ng-init="selectedColors=3"> 

http://jsfiddle.net/9JxqA/1/

EDIT: Loại bỏ các thuộc tính được chọn trong ví dụ đầu tiên, đó là không cần nữa.

2

Bằng cách thêm tùy chọn có giá trị trống để chọn và khởi tạo các màu được chọn thành chuỗi rỗng (ng-init = "selectedColors = ''"), chúng ta có thể thấy tùy chọn 'chọn màu' ở trên đầu thay vì chọn màu đầu tiên :

<div> 
<select id="myselection" ng-init="selectedColors=''" ng-model="selectedColors"> 
    <option value="">Select Color</option> 
    <option value="1">Red</option> 
    <option value="2">Blue</option> 
    <option value="3">Green</option> 
</select> 
<div>Selected Colors: {{selectedColors }}</div> 

Thử nó trên Fiddle http://jsfiddle.net/CodecPM/qxyckf7u/

+0

Tôi chọn câu trả lời này. dựa vào ng-init chính nó đôi khi tạo ra tạm thời trống

2

Bạn cần phải làm chỉ có hai điều 1) ng-init = "ngày = 'noday" 2) ng-selected =" đúng "

<select class="filtersday" ng-init="days='noday'" ng-model="days"> 
<option ng-selected="true" value="noday">--Select Day--</option> 
0

Dùng ng-selected = "true"

Kiểm tra mã bên dưới:

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<select ng-model="foo" ng-app > 
 
    <option value="1">1</option> 
 
    <option ng-selected="true" value="2">2</option> 
 
    <option value="3">3</option> 
 
    <option value="4">4</option> 
 
    <option value="5">5</option> 
 
</select>

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