Javascript 使用ngshow改进AngularJS视图更新
现在我有一个视图,当满足某些条件时,使用ng show显示Javascript 使用ngshow改进AngularJS视图更新,javascript,angularjs,ng-show,angularjs-view,Javascript,Angularjs,Ng Show,Angularjs View,现在我有一个视图,当满足某些条件时,使用ng show显示selectDOM对象,在所有其他情况下,使用ng show显示inputDOM对象。当我这样做并在这两种情况之间切换时,input框消失的时间要比出现select时长。延迟是非常明显的,所以我想对其进行改进,使两个DOM更改之间的延迟非常小 有没有办法做到这一点 <div> <input ng-show="field && (type == 'search' || fieldBucket[field
select
DOM对象,在所有其他情况下,使用ng show显示input
DOM对象。当我这样做并在这两种情况之间切换时,input
框消失的时间要比出现select
时长。延迟是非常明显的,所以我想对其进行改进,使两个DOM更改之间的延迟非常小
有没有办法做到这一点
<div>
<input ng-show="field && (type == 'search' || fieldBucket[field].moreBuckets)"
type="text" ng-model="value">
<select class="facet-value"
ng-show="field && type == 'filter' && !fieldBucket[field].moreBuckets"
ng-model="value"
ng-options="fieldBucket[field].buckets">
</select>
</div>
我不认为它与ng show或hide有任何关系,它可能取决于您希望从服务器得到的一些数据作为响应。 我已经为您创建了一个简单的演示,在基本ng显示/隐藏中,如果同时设置了它们的值,则不会有任何分支
<!doctype html>
<html ng-app>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script>
</head>
<body>
<div class="wrapper" ng-app="test">
<div class="phone" ng-controller="TestCtrl" ng-init="type = 'search'">
<a href="" ng-click="type = 'search'"> search</a>
<a href="" ng-click="type = 'filter'"> filter</a>
<div >
<input ng-show="type == 'search'"
type="text" ng-model="value">
<select class="facet-value"
ng-show="type == 'filter'"
ng-model="value"
ng-options="obj.name for obj in list">
</select>
</div>
</div>
</body>
<script type="text/javascript">
var app = angular.module('test', []);
function TestCtrl($scope) {
$scope.list = [{name : 'one'}, {name : 'two'}];
}
</script>
</html>
var app=角度模块('测试',[]);
函数TestCtrl($scope){
$scope.list=[{name:'one'},{name:'two'}];
}
您确定您的情况在同一时间发生变化吗?i、 e.当一个变为假时,另一个会立即变为真吗?@HankScorpio我对代码做了一些修改,使其更简单,但我很确定它们应该同时更改。我尝试的另一件事是将一个设置为ng hide
,另一个设置为ng show
,但它仍然存在相同的问题。我认为问题不在于ng show、ng hide、ng if或任何其他指令。更可能的情况是,条件没有同时改变。也许其中一个依赖于某个异步事件,比如服务器响应?不管怎样,你发布的html都没有问题。我建议显示更多的代码,包括条件如何变化。按照SO准则,请创建一个plunker,如果可能的话,它会复制这个问题。@Hankscopio但是从我共享的代码来看,这两个指令都依赖于相同的三个变量,所以不应该有任何异步进程延迟任何一个。我会把一个演示放在一起,展示这个过程。我有点误读了你的帖子。我看到,当您从
切换到
时,它们都会同时显示,因此条件必须同时为真。非常奇怪。你认为如果我做了更改,使指令绑定到布尔变量而不是计算角度表达式,会使DOM操作同步吗?原因可能是在ng show/hide中进行计算。甚至布尔运算的性能也是一样的。它最后只对布尔值起作用。它评估您的表达,并仅表示为真或假。然后ng show=“type”和ng show=“!type”将具有相同的性能。