我正在使用Ionic和AngularJS开发应用程序。 无法计算如何获得所选选项的价值
控制器
.controller('TestCtrl', function($scope, $options) {
$scope.options = [
{ id: 0, label: '15', value: 15 },
{ id: 1, label: '30', value: 30 },
{ id: 2, label: '60', value: 60 }
]
$scope.countSelector = $scope.options[0];
$scope.changeCount = function(obj){
obj = JSON.parse(obj);
console.log(obj)
console.log(countSelector)
$options.set('productCountPerPageValue', obj.value);
$options.set('productCountPerPage', obj.id);
};
...
})
模板
<ion-list ng-controller="TestCtrl">
<label class="item item-input item-select">
<div class="input-label">
{{countSelector}}
</div>
<select ng-model="countSelector" ng-change="changeCount('{{countSelector}}')" ng-options="opt as opt.label for opt in options">
</select>
</label>
</ion-list>
console.log(obj)始终返回先前选择的值
console.log(countSelector)始终返回默认值(如果已设置)或未定义
答案 0 :(得分:5)
当您执行select ng-model="countSelector"
时,您将选择绑定到$scope.countSelector
因此,在您的控制器中,如果您想要访问所选值,请使用以下内容:
$scope.countSelector
编辑:
根据您的要求,您可能希望直接在$ scope.countSelector中包含值。为此,您可以将ng-options调整为以下内容:
ng-options="opt.id as opt.label for opt in options"
答案 1 :(得分:2)
您正在将countSelector的字符串版本传递给ng-change函数。如果你看一下html,它看起来像这样:
<select ng-model="countSelector"
ng-change="changeCount('{"id":1,"label":"30","value":30}')"
ng-options="opt as opt.label for opt in options" class="ng-valid ng-dirty">
技术上,您可以通过不使用表达式将countSelector传递到函数中:
<select ng-model="countSelector" ng-change="changeCount(countSelector)" ng-options="opt as opt.label for opt in options">
正如@Deblaton Jean-Philippe的回答所解释的那样,您可以通过示波器访问它,因此并不是真的需要它。