关于ngOptions的问题跟踪

时间:2017-06-08 18:17:32

标签: javascript angularjs ng-options

我在使用ngOptions创建的AngularJs选项/选择器时遇到了一些问题。我遇到的问题是它没有触发ngChange中的方法。我发现了这一点,因为actionList name属性并不是唯一的。因此,如果我改变它们是独特的,它将按预期工作。但是我想让它们像现在一样被命名。

所以我想我可以试试像ng-options="action.name for action in ctrl.actionList track by action.value"这样的东西。但它不起作用。谁可以帮助我在这里?

HTML

<select id="someOptions" class="dropdown dropdown-md"
    ng-model="ctrl.settingAction"
    ng-change="ctrl.onChangeAction()"
    ng-options="action.name for action in ctrl.actionList">
</select>

数据结构

actionList = [{
    name: "Running Man"
    value: "RUN"
}, {
    name: "Running Man"
    value: "JUMP"
}]

JS

public onChangeAction(): void {
    console.log(this.settingAction);
}

2 个答案:

答案 0 :(得分:0)

您似乎正在使用&#39;控制器作为&#39;句法。你可以确认在{vm / self中设置onChangeAction()函数是这样的吗?

var vm = this;
vm.onChangeAction = function (): void {
    console.log(this.settingAction);
}

答案 1 :(得分:0)

<强>样本

angular.module('myApp',[]).controller('myCtrl', function($scope){
 var ctrl = this;
 this.actionList =[{
    "name": "Running Man",
    "value": "RUN"
}, {
    "name": "Running Man",
    "value": "JUMP"
}];

this.onChangeAction = function(){
 alert(this.settingAction.value);
}
 
          
 });
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.22/angular.min.js"></script>
<div ng-app="myApp" ng-controller="myCtrl as ctrl">
 <select id="someOptions" class="dropdown dropdown-md"
    ng-model="ctrl.settingAction"
    ng-change="ctrl.onChangeAction()"
    ng-options="action.name for action in ctrl.actionList">
</select>
</div>