如何避免在 Angular 中更新视图后旧值闪烁?
How to avoid old value flashed after view updated in Angular?
在我的 angular 应用程序中,有一个具有事件侦听器的主要应用程序组件:
...
$scope.$on('page::change', function(e, value) {
self.navList = value;
});
...
还有一个应用组件内的导航组件,它只有一个绑定到应用组件内的navList的变量:
app.component('navBar', {
bindings: {
list: '<',
},
templateUrl: 'templates/e/navBar.html',
...
});
里面navBar.html,我用ng-repeat来显示'list'的数据:
<nav>
<a ng-repeat="(key,value) in Nav.list" ng-href="{{ value }}" ng-bind="key"></a>
</nav>
每当我在应用程序中更改 navList 的值,或者发出 'page::change' 事件时,数据视图将在网页中闪烁,如:
原文:
OldValue
然后闪现:
NewValue OldValue
然后最后:
NewValue
我应该如何解决这个问题? anuglar的版本是1.5.8
你可以试试这个:
$scope.$watch('modelName' , function ( newValue, oldValue ) {
// access new and old value here
console.log("Your former modelName was "+oldValue+", your current modelName value "+newValue+".");
});
我有时遇到同样的问题,我的解决方案是放置一个元素以避免对一个元素进行多次绑定:
<nav>
<span ng-repeat="(key,value) in Nav.list">
<a ng-href="{{value}}">{{key}}</a>
</span>
</nav>
我不知道这对你的情况是否有帮助,但我可以试试。
在我的 angular 应用程序中,有一个具有事件侦听器的主要应用程序组件:
...
$scope.$on('page::change', function(e, value) {
self.navList = value;
});
...
还有一个应用组件内的导航组件,它只有一个绑定到应用组件内的navList的变量:
app.component('navBar', {
bindings: {
list: '<',
},
templateUrl: 'templates/e/navBar.html',
...
});
里面navBar.html,我用ng-repeat来显示'list'的数据:
<nav>
<a ng-repeat="(key,value) in Nav.list" ng-href="{{ value }}" ng-bind="key"></a>
</nav>
每当我在应用程序中更改 navList 的值,或者发出 'page::change' 事件时,数据视图将在网页中闪烁,如:
原文:
OldValue
然后闪现:
NewValue OldValue
然后最后:
NewValue
我应该如何解决这个问题? anuglar的版本是1.5.8
你可以试试这个:
$scope.$watch('modelName' , function ( newValue, oldValue ) {
// access new and old value here
console.log("Your former modelName was "+oldValue+", your current modelName value "+newValue+".");
});
我有时遇到同样的问题,我的解决方案是放置一个元素以避免对一个元素进行多次绑定:
<nav>
<span ng-repeat="(key,value) in Nav.list">
<a ng-href="{{value}}">{{key}}</a>
</span>
</nav>
我不知道这对你的情况是否有帮助,但我可以试试。