2015-01-23 18 views
8

Chào buổi sáng, tôi có một trường, khi nó được xem nó là một nhãn, khi nó được sửa đổi nó là một trường đầu vào, tôi kích hoạt nó với ng-show và ng-hide và một nút cho phép một giá trị boolean. Khi tôi kích hoạt chế độ chỉnh sửa nhãn ẩn và trường đầu vào hiển thị, đó là thời gian thực, khi tôi nhấp vào hủy và chuyển boolean, nhãn xuất hiện nhưng trường nhập mất một khoảng thời gian để ẩn, vì vậy tôi có hiệu ứng hình ảnh rất tệ . tại đây một số mã sốangularjs ngHide bị trễ với ngShow

<input ng-model="name" ng-show="editing"> 
<label ng-hide="editing">{{name}}</label> 

<button ng-click="editing=true">Edit</button> 
<button ng-click="editing=false">Cancel</button> 

có cách nào để khắc phục sự cố này không?

Cảm ơn bạn

+0

Có thể chúng ta cần xem toàn bộ mã của bạn - vui lòng đăng nội dung như [jsFiddle] (http://jsfiddle.net/) để minh họa sự cố của bạn. – spirulence

+0

Đồng ý; dường như không thể tái tạo vấn đề này trên riêng của tôi –

+0

đây là jsFiddle http://jsfiddle.net/6qrv23v0/ ở đây hiệu quả là không nhìn thấy được, tôi nghĩ rằng tôi có hiệu lực bởi vì tôi có một bộ điều khiển lớn và một rất nhiều thứ vào mái vòm của tôi (nó là một ứng dụng đầy đủ). – user2100125

Trả lời

28

Bạn đã bao gồm ngAnimate?

nếu có, điều này có thể xảy ra. Tại các dự án của chúng tôi, chúng tôi tuyên bố và sử dụng một lớp trên tất cả các yếu tố dom nơi chúng tôi muốn tạo hoạt ảnh và chúng tôi nói với góc để animate chỉ những yếu tố trong callback config:

$animateProvider.classNameFilter(/animate/); 
+0

vâng tôi có ngAnimate và boostrap quá, nếu tôi loại bỏ các lớp css từ lĩnh vực đầu vào nó không xảy ra – user2100125

+0

tôi cũng loại bỏ $ animate từ bộ điều khiển, nhưng vấn đề vẫn còn – user2100125

+1

đó là vì ngAnimate sử dụng thời gian chờ để lại thời gian cho các hình ảnh động, cách nhanh chóng và câm để kiểm tra điều này, sẽ loại bỏ ngAnimate khỏi danh sách mô-đun phụ thuộc, nhưng nếu bạn muốn xử lý vĩnh viễn, bạn nên sử dụng tùy chọn mà tôi đã đề cập trong câu trả lời – Ins

-1

Mã của bạn như không có vấn đề gì và bạn có thể thấy trong đoạn mã của tôi đang hoạt động như mong đợi. Bạn chưa tìm thấy sự cố của mình, bạn cần cung cấp cho chúng tôi nhiều HTML và mã hơn.

angular.module('myApp', []).controller('myController', function($scope) { 
 
    $scope.editing = true; 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="myApp" ng-controller="myController"> 
 
    <input ng-model="name" ng-show="editing"> 
 
    <label ng-hide="editing">{{name}}</label> 
 

 
    <button ng-click="editing=true">Edit</button> 
 
    <button ng-click="editing=false">Cancel</button> 
 
</div>

+0

ở đây hiệu ứng không hiển thị, tôi nghĩ rằng tôi có hiệu ứng bởi vì tôi có một bộ điều khiển lớn và rất nhiều thứ vào mái vòm của tôi (nó là một ứng dụng đầy đủ). – user2100125

2

tôi đã cùng một vấn đề tất cả thời gian tôi đã có các yếu tố với cùng một var để ẩn/hiển thị (vì ng-animate), điều này xảy ra với ng-show/ng-hide/ng-if và cũng có thể với ng-switch nhưng không phải với ng-class. Vì vậy, sửa chữa nhanh là thay đổi mã của bạn cho:

<input ng-model="name" ng-class="{'ng-hide':!editing}"> 
<label ng-class="{'ng-hide':editing}">{{name}}</label> 

<button ng-click="editing=true">Edit</button> 
<button ng-click="editing=false">Cancel</button> 
+0

Điều này không hiệu quả đối với tôi. –

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