2017-02-03 3 views
0

У меня есть этот кусок кодаизменение Trigger программно: AngularJS

<select id="headers" ng-model="importHeader.systemHeaders"> 
<option ng-repeat="requiredHeaders in vCtrl.wizard.costs.headerData.headers" value="{{requiredHeaders}}" ng-selected="vCtrl.wizard.costs.changed(importHeader.headerName,requiredHeaders.displayName)">{{requiredHeaders.displayName}} 
</option> 
</select> 

Все, что я делаю цикл по набору заголовков и проверок, если стоимость импортированного заголовка одинакова на то, что при необходимости и он автоматически выбирает его. Он отлично работает, но моя проблема заключается в том, что это не добавит systemHeaders в моем importHeaders объект объявлен на ng-model

мне нужен способ, чтобы вызвать событие изменения этого select. Я знаю, что при программном изменении seletion он не будет запускать событие ngChange.

я попытался создать функцию:

changed: function(val1,val2){ 
     if (val1 == val2){ 
      angular.element('#headers').change(); 
       return true; 
     } else { 
      return false; 
     } 

} 

но он получает мне $ применить это уже ошибка выполнения.

Заранее спасибо.

+0

вы присваиваете эту функцию '$ scope'? –

+0

Нет, я использую 'vm' при создании функций, а не' $ scope' – Yaje

+0

Просьба указать свой полный код –

ответ

0

Проверить это условие, прежде чем изменить строку заголовка

if($scope.$$phase) 
{ 
angular.element('#headers').change(); 
} 

И читать это обсуждение: What is $$phase in AngularJS?

+0

дает мне бесконечную ошибку на консоли, которая в основном говорит '' дайджест уже в процессе' – Yaje

+0

oops. Просто удалите строку '$ scope. $ Apply(); ' –