【发布时间】:2014-11-07 20:16:53
【问题描述】:
这是一个角度问题,带有 ng-show 和绑定。
我不想同时显示 2 个字段。一个是“显示”为真时显示,另一个是假时显示。
我有一个下拉列表,在选择某些选项时会更改此“显示”值。
但事情是这样的,有一个很短的时刻,两个人同时出现,即使他们不应该出现。这怎么可能,以及如何解决?
【问题讨论】:
-
任何动画?
这是一个角度问题,带有 ng-show 和绑定。
我不想同时显示 2 个字段。一个是“显示”为真时显示,另一个是假时显示。
我有一个下拉列表,在选择某些选项时会更改此“显示”值。
但事情是这样的,有一个很短的时刻,两个人同时出现,即使他们不应该出现。这怎么可能,以及如何解决?
【问题讨论】:
我知道为什么它没有立即隐藏:默认过渡动画为 0.5 秒。您需要将其覆盖到 CSS 中,确切地说,它位于 ng-hide-add 和 ng-hide-remove 类中。
【讨论】:
这是您所要求的最简单的工作示例。它立即改变。如果不深入了解您的具体情况,很难说出导致延迟的原因。
var module = angular.module('test', []);
function PageCtrl($scope) {
$scope.msg = 'Select hide/show example';
$scope.showFirst = true;
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="test" ng-controller="PageCtrl">
<p>{{msg}}</p>
<select ng-model="showFirst">
<option ng-value="true">First</option>
<option ng-value="false">Second</option>
</select>
<p ng-show="showFirst">This is paragraph one</p>
<p ng-hide="showFirst">This is paragraph two</p>
</div>
【讨论】:
您想要做的是使用 ng-hide 和 ng-show 代替。然后使用 $scope.value 将两者都设置为 true。最初 ng-hide 将被隐藏并且 ng-show 将被显示,然后当您将 $scope.value 切换为 false 时,它将反向翻转。基本上不使用两个 ng-show,但您使用 ng-hide 和 ng-show 的组合。
【讨论】: