2014-07-01 25 views
6

Trong mã này:mô hình cập nhật sau khi tập trung bị mất kiểm soát đầu vào

<input class="form-control" ng-model="actionText" /> 

AngularJS sẽ cập nhật actionText mô hình như những thứ loại người dùng trong Nếu mô hình này đang được sử dụng ở những nơi khác, chẳng hạn như trong một bộ điều khiển,. nó được cập nhật khi mỗi ký tự được nhập. Tôi có thể nghĩ về những tình huống mà thực sự có thể là một điều xấu. Có thể bạn chỉ muốn giá trị mô hình SAU KHI người dùng đã di chuyển tiêu điểm từ đầu vào sang thứ gì đó khác, chẳng hạn như khi bạn cần xác thực đầu vào khi nó đã hoàn thành. Tôi có thể sử dụng chức năng làm mờ của Javascript để thiết lập một trình xử lý để xác định khi nào tiêu điểm bị mất nhưng điều đó có vẻ trái ngược với cách mà Angular có ý nghĩa. Có một cách AngularJS cập nhật mô hình sau khi đầu vào đã bị mất tập trung?

Trả lời

15

Bạn có thể sử dụng các chỉ thị ngModelOptions cho việc này. Với ngModelOptions bạn có thể tinh chỉnh thêm cách hoạt động của chỉ thị ngModel. Để đạt được những gì bạn yêu cầu, bạn có thể sử dụng nó như thế này:

<input class="form-control" ng-model="actionText" 
    ng-model-options="{ updateOn: 'blur'}"/> 

Bạn có thể tìm thêm thông tin và một ví dụ làm việc trong các tài liệu hướng góc: https://docs.angularjs.org/api/ng/directive/ngModelOptions

+0

Tính năng này có hoạt động trong 1.3 nhánh trước không? – lucuma

+0

Đây có phải là cách được khuyến nghị để xử lý xác thực không? Nói cách khác, sau khi bạn mất tập trung, bạn muốn xác thực đầu vào cho một số mẫu (địa chỉ, số điện thoại, v.v.). – AndroidDev

+0

@lucuma Tôi không thực sự biết nếu nó hoạt động trong các chi nhánh cũ. – Nikolas

2

Tôi nghĩ cách đơn giản nhất có thể chỉ là sử dụng ng-blur để kích hoạt những gì bạn muốn làm.

http://plnkr.co/edit/rhcliQRzUOBKQ3xKFrde?p=preview

app.controller('MainCtrl', function($scope) { 

    $scope.myDataBlurred = $scope.myData; 

    $scope.blurred = function() { 
    $scope.myDataBlurred = $scope.myData; 
    } 
}); 

<input ng-model='myData' ng-blur='blurred()' /> 

    <div> 
     This will update as you type: {{myData}} 
    </div> 
    <div> 
     This will update after you blur: {{myDataBlurred}} 
    </div> 
+0

tôi làm như ng-mô hình tùy chọn như được đăng bởi @Nikolas. Phụ thuộc vào trường hợp sử dụng và phiên bản góc cạnh của bạn. – lucuma

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