如果没有从ng-options中选择value,如何使用ng-change
How to use ng-change if value is not selected from ng-options?
如果我不从下拉菜单中选择值并单击开始录制按钮,它会抛出错误TypeError: Cannot read property 'size' of undefined
任何想法我如何使用angularJs的ng-change指令解决这个问题?
main.html
<div class="col-md-3">
<select class="form-control" ng-model="selectedFileSize" ng-options="item as item.value for item in FileSizeOptions" ng-change="onSizeChange()"><option value="">Select</option></select>
</div>
<button type="button" class="btn btn-primary" ng-click="startRecording()">Start Recording</button>
ctrl.js
$scope.FileSizeOptions = [{size: 1, value: "1MB"}, {size: 2, value: "2MB"}, {size: 3, value: "3MB"}, {size: 4, value: "4MB"}, {size: 5, value:"5MB"}];
$scope.onSizeChange = function() {
$scope.maxMb = $scope.selectedFileSize.size;
$scope.maxBytes = 1000 * 1000 * $scope.maxMb;
$scope.max = $scope.maxBytes;
$scope.FileSizeString = $scope.selectedFileSize.value;
console.log('FileSize', $scope.maxMb);
}
$scope.startRecording = function() {
if ($scope.selectedFileSize.size) { //logic here
}
}
您没有检查它是否未定义。如果没有选择,则会抛出此错误,除非您将以下代码放入:
if($scope.selectedFileSize!=undefined){
if ($scope.selectedFileSize.size) { //logic here
}
}
是,$scope.selectedFileSize。
1、你应该只这样做:if($scope.selectedFileSize),因为你只需要确定ng-model (selectedFileSize)是否被定义。
2,禁用/隐藏按钮,直到其中一个项目没有被选中。在这种情况下,应该在按钮上使用ng-if或ng-show/ng-hide。
<button type="button" class="btn btn-primary" ng-if="selectedFileSize" ng-click="startRecording()">Start Recording</button>
ng-if指令需要一个表达式,这意味着如果定义了selectedFileSize,它将为真,按钮将显示,如果没有定义selectedFileSize(在init上),它将不显示。
我找到了解决方案:
if ($scope.selectedFileSize && $scope.selectedFileSize.size) {
//logic here
}
相关文章:
- 与ng一起使用localstorage Change dons'不起作用
- 使用 ng-change 对输入类型数据进行 JavaScript 取消事件
- 从服务器获取数据,并使用$http服务和ng-change在select事件上显示它
- 何时在 Angularjs 中使用 $watch 或 ng-change
- 角度新手:尝试使用 ng-change,获取“模块'ngModel'不可用”
- 使用角度,如何在下拉列表中获取 ng-change 上的选定值
- 使用 ng-change Angular 隐藏元素
- 如何使用 AngularJS 在我的选择标签中使用 onSelect 而不是 ng-change
- 在AngularJS中使用ng-change和“Controller As”语法
- 如何在 Angular TypeAhead 搜索中使用 NG-CHANGE
- 如何转换'time'在AngularJS中使用ng-change时将其转换为字符串
- 在Angularjs中使用指令触发ng-change
- 有没有一种方法可以使用ng-options而不使用ng-change来更新两个值?
- 使用ng-class和ng-change在元素中动态设置类
- 对于第一次使用ng-repeat而不是第二次使用ng-repeat创建的单选按钮,调用Ng-change事件
- 将ng-change应用于一个,该文件已经使用了它自己的指令
- 如果没有从ng-options中选择value,如何使用ng-change
- 如何使用ng-change查看未定义的ng-model变量值
- 使用ng-change的日期输入验证,AngularJS
- 如何使用 ng-change 获取字段的值