以编程方式触发更改:AngularJS

时间:2017-02-03 06:09:42

标签: 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的更改事件。我知道,当以编程方式更改选项时,它不会触发ngChange事件。

我尝试创建一个函数:

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

}

但是它给我一个$ apply已经在进行中错误。

提前致谢。

1 个答案:

答案 0 :(得分:0)

在更改标题行

之前检查此条件
if($scope.$$phase)
{
angular.element('#headers').change();
}

阅读此讨论:What is $$phase in AngularJS?