ngOptions 跟踪问题
Issue on ngOptions track by
我使用 ngOptions
创建的 AngularJs option/selector 有一些问题。我遇到的问题是它不会触发我在 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);
}
您似乎在使用 'controller as' 语法。你能确认 onChangeAction()
函数是这样设置在 vm/self 中的吗?
var vm = this;
vm.onChangeAction = function (): void {
console.log(this.settingAction);
}
演示
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>
我使用 ngOptions
创建的 AngularJs option/selector 有一些问题。我遇到的问题是它不会触发我在 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);
}
您似乎在使用 'controller as' 语法。你能确认 onChangeAction()
函数是这样设置在 vm/self 中的吗?
var vm = this;
vm.onChangeAction = function (): void {
console.log(this.settingAction);
}
演示
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>