2016-12-27 2 views
1

В моем угловом приложении, есть основной компонент приложения, которые имеют слушатель событий:Как избежать старого значения, появившегося после просмотра, обновленного в Angular?

... 
$scope.$on('page::change', function(e, value) { 
    self.navList = value; 
}); 
... 

и компонент навигации внутри приложения компонента, то есть только один varible, которые связывают с navList внутри приложения компонента:

app.component('navBar', { 
    bindings: { 
    list: '<', 
    }, 
    templateUrl: 'templates/e/navBar.html', 
    ... 
}); 

Внутри navBar.html, я использую нг-повтора, чтобы отобразить данные «списка»:

<nav> 
    <a ng-repeat="(key,value) in Nav.list" ng-href="{{ value }}" ng-bind="key"></a> 
</nav> 

Всякий раз, когда я изменить значение navList я Nside приложение, или я испускают событие 'страницы :: изменения', представление данных будет мигать на веб-странице, как:

Оригинал:

OldValue 

И затем вспышки:

NewValue OldValue 

И наконец:

NewValue 

Как исправить это? Версия anuglar является 1.5.8

+0

Вы не хотите хранить оба (старые и новые) значения –

ответ

1

У меня была та же проблема, а иногда и мое решение было поместить элемент вокруг, чтобы избежать многих привязок к одному элементу:

<nav> 
    <span ng-repeat="(key,value) in Nav.list"> 
     <a ng-href="{{value}}">{{key}}</a> 
    </span> 
</nav> 

Я не знаю, может ли это помочь вам в вашей ситуации, но я могу попробовать.

+0

Да, он работает сейчас. Большое спасибо. – qwang

1

Вы можете попробовать это:

$scope.$watch('modelName' , function (newValue, oldValue) { 
    // access new and old value here 
    console.log("Your former modelName was "+oldValue+", your current modelName value "+newValue+"."); 
}); 
+0

Да, я пробую это, чтобы проверить его. Он обновляется правильно. Но только взгляд меняется напрямую. Он должен меняться как «oldValue» -> «newValue», на мой взгляд он изменяется как «oldValue» -> «newValue oldValue» -> «newValue». Конечный результат правильный, но представление сверкнуло. – qwang

+0

Извините, я имею в виду, не меняет напрямую. – qwang

+0

Тогда я бы предположил, что при привязке значений очистить предыдущее значение: example: $ scope.myName = ""; –

Смежные вопросы