AngularJS系列之select下拉选择第一个选项为空白的解决办法 ng-change事件绑定

         </div>
                                                <link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-cd6c485e8b.css">
                                    <link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-cd6c485e8b.css">
            <div class="htmledit_views" id="content_views">
                                        <h2>今天给大家介绍一下AngularJS系列之select下拉选择第一个选项为空白的解决办法。<br>

相信大家也经常遇到这种情况吧:在使用AngularJS中的select组件开发的时候,莫名其妙的第一个选项就变成空白了,而且选中其中非空白的地方,第一个选项的空白位置又奇妙的消失了。

今天就举几个例子给大家介绍一下种种情况的处理办法,下面首先给出一个具体例子介绍一下:


 
 
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <script src="http://cdn.static.runoob.com/libs/angular.js/1.4.6/angular.min.js"> </script>
  6. </head>
  7. <body>
  8. <div ng-app="myApp" ng-controller="myCtrl">
  9. <p>选择网站: </p>
  10. <select ng-model="selectedSite">
  11. <option value="">请选择 </option> <!-- 这里是重点,必须将value值设置成空字符串,否则第一个选项还是会留空白出来-->
  12. <option ng-repeat="x in sites" value="{{x.url}}">{{x.site}} </option>
  13. </select>
  14. <h1>你选择的是: {{selectedSite}} </h1>
  15. </div>
  16. <script>
  17. var app = angular.module( 'myApp', []);
  18. app.controller( 'myCtrl', function($scope) {
  19. $scope.sites = [
  20. { site : "Google", url : "http://www.google.com"},
  21. { site : "Runoob", url : "http://www.runoob.com"},
  22. { site : "Taobao", url : "http://www.taobao.com"}
  23. ];
  24. });
  25. </script>
  26. <p>该实例演示了使用 ng-repeat 指令来创建下拉列表,选中的值是一个字符串。 </p>
  27. </body>
  28. </html>

第一种办法就是在select的下面加上一个默认option,不过有一点必须特别注意,就是在option中的value值必须设置为“”(也就是空字符串),否则上面第一个选项还是会留空白出来。

 

这样可能就会有人说我第一个option要是不想获取的value值为空,那该怎么办,比如我第一个value值想设置成“请选择”这个字符串呢?

这种情况也好解决,下面看一下下面这个例子,大家就会明白要怎么做了。

 


 
 
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <script src="http://cdn.static.runoob.com/libs/angular.js/1.4.6/angular.min.js"> </script>
  6. </head>
  7. <body>
  8. <div ng-app="myApp" ng-controller="myCtrl">
  9. <p>选择网站: </p>
  10. <select ng-model="selectedSite">
  11. <option value="请选择">请选择 </option> <!--注意这个地方要和下面的设置的值要一致 -->
  12. <option ng-repeat="x in sites" value="{{x.url}}">{{x.site}} </option>
  13. </select>
  14. <h1>你选择的是: {{selectedSite}} </h1>
  15. </div>
  16. <script>
  17. var app = angular.module( 'myApp', []);
  18. app.controller( 'myCtrl', function($scope) {
  19. $scope.sites = [
  20. { site : "Google", url : "http://www.google.com"},
  21. { site : "Runoob", url : "http://www.runoob.com"},
  22. { site : "Taobao", url : "http://www.taobao.com"}
  23. ];
  24. $scope.selectedSite= "请选择"; <!-- 注意这个设置值,要和上面的value值相一致才可以-->
  25. });
  26. </script>
  27. <p>该实例演示了使用 ng-repeat 指令来创建下拉列表,选中的值是一个字符串。 </p>
  28. </body>
  29. </html>

从例子中就可以看出,其实就是在value中添加自己想要的值信息,然后再控制器中进行传初始值。

 

但是这个时候大家可能会又有一个问题,就是我如果想第一个不想要默认值呢,我就想把数据的任意一个值放在第一个选项里面呢,而且还不能留空白在上面。

这种情况其实也好解决,下面就再看一个例子:


 
 
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <script src="http://cdn.static.runoob.com/libs/angular.js/1.4.6/angular.min.js"> </script>
  6. </head>
  7. <body>
  8. <div ng-app="myApp" ng-controller="myCtrl">
  9. <p>选择网站: </p>
  10. <select ng-model="selectedSite">
  11. <option ng-repeat="x in sites" value="{{x.url}}">{{x.site}} </option>
  12. </select>
  13. <h1>你选择的是: {{selectedSite}} </h1>
  14. </div>
  15. <script>
  16. var app = angular.module( 'myApp', []);
  17. app.controller( 'myCtrl', function($scope) {
  18. $scope.sites = [
  19. { site : "Google", url : "http://www.google.com"},
  20. { site : "Runoob", url : "http://www.runoob.com"},
  21. { site : "Taobao", url : "http://www.taobao.com"}
  22. ];
  23. $scope.selectedSite=$scope.sites[ 0].url; <!-- 这里只要把想要第一次出来的url放在这里就可以实现option默认出现的效果了-->
  24. });
  25. </script>
  26. <p>该实例演示了使用 ng-repeat 指令来创建下拉列表,选中的值是一个字符串。 </p>
  27. </body>
  28. </html>

从上面的例子可以很明显的看出,只要在控制器中添加相应的初始值,就可以实现select中默认选中的效果了。

 

这样基本就全部解决了select中第一个选项留空白的问题了。

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: el-select是一个基于Element UI的下拉选择器组件,可以用于展示一组选项供用户选择。在动态绑定值并使用change事件时,可能会出现change事件没有触发的情况。出现这种情况可能有以下几个原因: 1. 绑定值没有及时更新:在动态绑定值时,需要确保绑定的值及时更新,以便正确触发change事件。可以通过在值发生变化的时候更新绑定值来解决这个问题。 2. 没有正确绑定change事件:当动态绑定值后,需要确保正确地绑定change事件,以便在值改变时触发相应的操作。可以通过在el-select组件上绑定v-on:change事件来解决这个问题。 3. 绑定值类型不匹配:在动态绑定值时,需要确保绑定的值类型与el-select组件所期望的值类型一致。如果类型不匹配,可能会导致change事件不触发。可以通过检查绑定值的类型并转换成正确的类型来解决这个问题。 4. 绑定值没有绑定到正确的组件:如果存在多个el-select组件,需要确保绑定值正确地绑定到目标组件上。如果绑定值没有绑定到正确的组件,change事件可能会被其他组件所触发。可以通过检查绑定绑定的组件是否正确来解决这个问题。 综上所述,当出现el-select动态绑定change事件没有触发的情况时,可以通过检查绑定值的更新、正确绑定change事件绑定值的类型和绑定值所绑定的组件等方面来解决问题。 ### 回答2: el-select是Element UI中的下拉选择组件,可用于选择单个或多个值。动态绑定值是将value属性与一个变量绑定,使其可以实时更新。当下拉选择框的值发生改变时,会触发change事件。 如果动态绑定change事件没有触发,可能有以下几个原因: 1. 绑定的值没有修改:首先需要确保绑定的值是可以被修改的,而不是只读属性。如果该值是计算属性或者通过props传入的,需要确保其可以被修改。 2. 绑定的值没有正确响应变化:动态绑定值需要确保其在实际变化时能够正确响应。可以通过在数据变化后调用$nextTick方法,确保界面更新时绑定的值已经更新。 3. 绑定值变化时没有正确监听:需要确认是否正确监听了change事件。可以通过在el-select标签上添加@change监听change事件,确保当值发生改变时能够触发相应的事件处理函数。同时还需要确保事件处理函数已正确绑定。 4. 绑定值的类型错误:需要确保绑定的值的类型与el-select组件所需的值类型一致。如果类型不一致,可能会导致change事件无法触发。可以通过在el-select标签上添加:value-key属性指定绑定值对象的键名,确保正确匹配。 综上所述,要解决el-select动态绑定change事件没有触发的问题,需要确保绑定的值可以被修改、在变化时能够正确响应、正确监听change事件,并且绑定值的类型与el-select组件所需的值类型一致。 ### 回答3: 当使用el-select组件进行动态绑定值时,如果change事件没有触发,通常可以通过以下几个步骤来解决问题。 首先,确保你已经正确地绑定了值。可以通过在el-select组件上使用v-model指令来实现双向绑定。例如: <el-select v-model="selectedValue"> <!-- options --> </el-select> 在上面的代码中,selectedValue变量将会与el-select组件的选中值进行双向绑定。 然后,确保你在动态改变绑定值时,使用了正确的方式。例如,如果你使用了watch属性去监听selectedValue的变化,并在回调函数中改变其他数据,那么确保你使用this.$nextTick()来确保DOM更新完毕后再进行其他操作。示例如下: watch: { selectedValue(newValue) { this.$nextTick(() => { // 其他操作 }); }, } 最后,确认是否正确绑定change事件。el-select组件提供了change事件,可以在该事件回调函数中处理选中值的变化。例如: <el-select v-model="selectedValue" @change="handleChange"> <!-- options --> </el-select> methods: { handleChange(value) { // 处理选中值的变化 }, } 通过以上步骤的检查,你应该能够找到解决问题的方法,确保el-select组件的动态绑定值可以正常触发change事件,实现你想要的业务逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值