AngularJS在作用域中获取选定项目

8
我正在使用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) 总是返回默认值(如果设置)或未定义

2个回答

5
当你执行 select ng-model="countSelector" 时,你将你的选择绑定到了 $scope.countSelector
因此,在你的控制器中,如果你想要访问所选的值,你可以使用以下代码:
$scope.countSelector

编辑:

根据您的要求,您可能希望直接获得 $scope.countSelector 中的值。为了做到这一点,您可以将您的 ng-options 调整为以下方式:

ng-options="opt.id as opt.label for opt in options"

3

您将计数选择器的字符串版本传递给了ng-change函数。如果您查看HTML代码,它应该是这样的:

<select ng-model="countSelector" 
                  ng-change="changeCount('{&quot;id&quot;:1,&quot;label&quot;:&quot;30&quot;,&quot;value&quot;: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">

http://jsfiddle.net/r2zgmgq1/

正如@Deblaton Jean-Philippe的回答所解释的那样,您可以通过作用域访问它,因此实际上并不需要它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接