Tôi chạy vào một vấn đề tương tự khi cố gắng để làm nổi bật văn bản trong một ràng buộc dữ liệu. Mục tiêu của tôi là làm nổi bật văn bản đang được thay đổi cho giao diện người dùng kiểu dáng đẹp hơn. Từ góc độ giao diện người dùng, điều này đảm bảo rằng người dùng biết những gì đang được thay đổi trong khi họ điền vào biểu mẫu.
Đây là những gì tôi đã học (I kèm theo một fiddle dưới đây)
Thứ nhất, bạn không muốn sử dụng đồng hồ. Điều này sẽ tạo ra một chu kỳ khó chịu của true :: false trên ng-class và do đó sẽ không tạo ra một chuyển tiếp rõ ràng.
Thứ hai, bạn không thể nghĩ góc cạnh như jquery nơi bạn tìm thấy phần tử và thay đổi thành phần đó. Chìa khóa để góc cạnh là khả năng sử dụng lại, những nỗ lực ban đầu của tôi bị thiếu nghiêm trọng.
Thứ ba, sự kiện như ng-focus, ng-blur, ng-click, (... và nhiều hơn nữa), là bánh mì và bơ trong việc nhận được kết quả tôi muốn.
Giải pháp của tôi là sử dụng ng lấy nét và ng-mờ để phát hiện khi một đầu vào đã được chỉnh sửa
<input ng-focus="highlight('name')" ng-blur="doneHighlight('name')"
ng-model="user.name" />
Trong ng lấy nét tôi kêu gọi một chức năng nổi bật và đi qua một cuộc tranh cãi gọi là 'tên' . Lập luận này là chìa khóa để tái sử dụng.
$scope.highlight = function(className){
$scope.toggle = className;
}
Sau khi chuyển qua, chuyển đổi bằng đối số.
Đây là kicker ...
<div ng-class="{'toggle': toggle=='name', 'noToggle': toggle=='name'+false}">
{{user.name}}
</div>
Khi chuyển đổi được == để lập luận thông qua sau đó nổi bật được áp dụng khi nó được == 'tên' + sai lớp 'noToggle' được áp dụng với mịn hoạt hình unhighlight.
Đợi ... còn ng-blur thì sao? Tôi vui mừng bạn đã hỏi! ng-blur gọi hàm 'doneHighlight' và chuyển cùng một đối số lớp.
$scope.doneHighlight = function(className){
$scope.toggle = className + false;
}
Tuy nhiên, khi chuyển đối số, nó cũng gắn giá trị sai ở cuối tên lớp. Đây là một suy nghĩ khác sau đó jQuery nhưng cho phép tôi sử dụng lại các chức năng trong bộ điều khiển cho nhiều phần tử khi cần thiết;
Hy vọng điều này sẽ hữu ích!Tôi rất sẵn lòng trả lời bất kỳ câu hỏi nào khác.
http://jsfiddle.net/bebold/8MAKT/1
Bạn nên đề cập đến ' Phương thức $ animate.addClass' và hiển thị một ví dụ. – RandallB