如何传递由 ng-change 触发的 ng-repeat 创建的选项值和标签
How to pass option value and label created with ng-repeat triggered by ng-change
我正在使用 ng-repeat 创建选项,在 ng-change 上我想调用控制器函数并传递选项值和标签。我也尝试过使用 ng-options 创建选项,但陷入了 ng-repeat 过滤器的陷阱,没有帮助。
我可以将 ng-model 传递给函数,这会得到值,但不能同时得到值和标签。
这是我的代码,它代表了我想做的事情,但显然不起作用,因为 ng-change 函数调用在 ng-repeat 之外。
diskSizes = [
{
"label": "100GB",
"value": 100
},
{
"label": "250GB",
"value": 250
},
{
"label": "500GB",
"value": 500
},
{
"label": "1TB",
"value": 1000
},
{
"label": "1.5TB",
"value": 1500
}
]
HTML
<td >
<select ng-model="disk_size" ng-change="saveData(value,label)">
<option ng-repeat="item in diskSizes" value={{item.value}}>{{item.label}}</option>
</select>
</td>
通常使用 angularJS,HTML 仅反映数据结构,您可能应该在该数据结构中获取标签值。
angular.module('myApp', [])
.controller('myCtrl', ['$scope', function($scope) {
$scope.diskSizes = [{
"label": "100GB",
"value": 100
},
{
"label": "250GB",
"value": 250
},
{
"label": "500GB",
"value": 500
},
{
"label": "1TB",
"value": 1000
},
{
"label": "1.5TB",
"value": 1500
}
]
$scope.saveData = function() {
let val = $scope.disk_size;
let lab = $scope.diskSizes.filter(f => f.value == val)[0].label;
console.log(lab, val)
}
}]);
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.7.5/angular.min.js"></script>
<div ng-app="myApp" ng-controller="myCtrl">
<select ng-model="disk_size" ng-change="saveData()">
<option ng-repeat="item in diskSizes" value={{item.value}}>{{item.label}}</option>
</select>
</div>
我正在使用 ng-repeat 创建选项,在 ng-change 上我想调用控制器函数并传递选项值和标签。我也尝试过使用 ng-options 创建选项,但陷入了 ng-repeat 过滤器的陷阱,没有帮助。
我可以将 ng-model 传递给函数,这会得到值,但不能同时得到值和标签。
这是我的代码,它代表了我想做的事情,但显然不起作用,因为 ng-change 函数调用在 ng-repeat 之外。
diskSizes = [
{
"label": "100GB",
"value": 100
},
{
"label": "250GB",
"value": 250
},
{
"label": "500GB",
"value": 500
},
{
"label": "1TB",
"value": 1000
},
{
"label": "1.5TB",
"value": 1500
}
]
HTML
<td >
<select ng-model="disk_size" ng-change="saveData(value,label)">
<option ng-repeat="item in diskSizes" value={{item.value}}>{{item.label}}</option>
</select>
</td>
通常使用 angularJS,HTML 仅反映数据结构,您可能应该在该数据结构中获取标签值。
angular.module('myApp', [])
.controller('myCtrl', ['$scope', function($scope) {
$scope.diskSizes = [{
"label": "100GB",
"value": 100
},
{
"label": "250GB",
"value": 250
},
{
"label": "500GB",
"value": 500
},
{
"label": "1TB",
"value": 1000
},
{
"label": "1.5TB",
"value": 1500
}
]
$scope.saveData = function() {
let val = $scope.disk_size;
let lab = $scope.diskSizes.filter(f => f.value == val)[0].label;
console.log(lab, val)
}
}]);
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.7.5/angular.min.js"></script>
<div ng-app="myApp" ng-controller="myCtrl">
<select ng-model="disk_size" ng-change="saveData()">
<option ng-repeat="item in diskSizes" value={{item.value}}>{{item.label}}</option>
</select>
</div>