ng-change 不适用于 ng-repeat with options 但适用于 ng-options

ng-change does not work with ng-repeat with options but works with ng-options

我已经使用 ng-repeat 创建了 select 选项,但是永远不会调用使用 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: ");
}

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

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

这是一个可行的解决方案:jsfiddle

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

JS

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

如果你想这样做,你需要将 ng-model 和 ng-change 放在 select 标签中,试试这个:

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