2013-04-29 34 views
13

Tôi đang làm việc trên một dự án angularjs và tôi có một vấn đề với ngModel không ràng buộc trong lựa chọn.Nhưng khái niệm tương tự đang làm việc trong một thẻ chọn và trong cùng một trang html. Dưới đây là mã.AngularJS ngModel chỉ thị trong lựa chọn

<select ng-model="selectedFont" 
      ng-options="font.title for font in fonts" 
      ng-change="onFontChange()"> 
    </select> 

onFontChange() chức năng được đặt trong bộ điều khiển.

Bất kỳ ai giúp đỡ đều được đánh giá cao ... Cảm ơn bạn trước.

+1

vui lòng chia sẻ mã hoàn chỉnh hoặc chia sẻ bản demo jsfiddle –

+0

Tôi không biết cách sử dụng jsfiddle –

+0

Bạn có thể đăng mã cho 'onFontChange()' không? –

Trả lời

20

Dựa trên Tony fiddle của Pony:

<div ng-app ng-controller="MyCtrl"> 
    <select ng-model="opt" 
      ng-options="font.title for font in fonts" 
      ng-change="change(opt)"> 
    </select> 

    <p>{{opt}}</p> 
</div> 

Với một bộ điều khiển:

function MyCtrl($scope) { 
    $scope.fonts = [ 
     {title: "Arial" , text: 'Url for Arial' }, 
     {title: "Helvetica" , text: 'Url for Helvetica' } 
    ]; 
    $scope.change= function(option){ 
     alert(option.title); 
    } 
} 

http://jsfiddle.net/basarat/3y5Pw/43/

+3

Ước gì tôi có thể upvote điều này hai lần. – Skitterm

+0

Bạn cũng có thể sử dụng '$ scope. $ Watch()' như đã nêu tại: http://stackoverflow.com/questions/15727219/how-can-i-detect-when-a-user-changes-the-value- in-a-select-drop-down-sử dụng-angul – Caumons

2

Đầu tiên tạo ra dữ liệu (có thể là địa phương hoặc từ máy chủ) trong Controller. Và khởi tạo giá trị mặc định, sẽ buộc mục mặc định được chọn ở dạng HTML.

// supported languages 
$scope.languages = ['ENGLISH', 'SPANISH', 'RUSSIAN', 'HINDI', 'NEPALI']; 
// init default language 
$scope.language = 'ENGLISH'; 

Bây giờ ở dạng HTML của bạn

<select class="form-control" ng-model="language"> 
    <option ng-repeat="language in languages">{{language}}</option> 
</select> 


Ảnh chụp màn hình là ở đây (lưu ý bootstrap CSS được sử dụng và không bao gồm ở đây).

enter image description here


Bạn có thể làm một thử nghiệm trong điều khiển, cho dù sự thay đổi đang làm việc

$scope.$watch('language', function (newVal, oldVal) { 
    console.log(oldVal + " -> " + newVal); 
}); 

ENGLISH -> NGA

NGA -> SPANISH

SPANISH -> RUSSIAN

Hy vọng điều này hữu ích. Cảm ơn!

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