ng-change不适用于带有选项的ng-repeat,但适用于ng-options

时间:2016-11-23 15:03:49

标签: javascript angularjs ng-repeat ng-options

我已经使用ng-repeat创建了选项,但是永远不会调用带有on-change设置的函数。

<select>
<option ng-model="level1Selected" ng-repeat="item1 in level1" ng-change="setLevel2()" value="{{item1}}">{{item1}}</option>

我用ng-options重新创建了同样的东西,并调用了函数:

<select ng-options="item1 for item1 in level1" ng-model="level1Selected" ng-change="setLevel2()"></select>

我已经检查了文档,我认为没有理由存在这种差异。变量level1是一个字符串数组,所以我不明白为什么它们的行为不同。

该函数目前只是一个带有console.log的占位符:

$scope.setLevel2 = function() {
    console.log("value: ");
}

2 个答案:

答案 0 :(得分:4)

如果你想这样做,你需要在选择标签中加入ng-model和ng-change,试试这个:

<select ng-model="level1Selected" ng-change="setLevel2()">
    <option ng-repeat="item1 in level1"  value="{{item1}}">{{item1}}</option>
</select>

答案 1 :(得分:1)

您需要向ng-change元素触发select指令。

ng-change事件会在值的每次更改时触发。

这是一个有效的解决方案:jsfiddle

 <select ng-model="level1Selected"  ng-change="setLevel2()">
    <option  value="{{item1}}">{{item1}}</option>
 </select>

JS

$scope.setLevel2 = function() {
   alert();
}