zoukankan      html  css  js  c++  java
  • AngularJS Select(选择框)

    AngularJS 可以使用数组或对象创建一个下拉列表选项。


    使用 ng-options 创建选择框

    在 AngularJS 中我们可以使用 ng-option 指令来创建一个下拉列表,列表项通过对象和数组循环输出,如下实例:

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js"></script>
    </head>
    <body>
    
    <div ng-app="myApp" ng-controller="myCtrl">
    
    <select ng-model="selectedName" ng-options="x for x in names">
    </select>
    
    </div>
    
    <script>
    var app = angular.module('myApp', []);
    app.controller('myCtrl', function($scope) {
        $scope.names = ["Google", "Runoob", "Taobao"];
    });
    </script>
    
    <p>该实例演示了 ng-options 指令的使用。</p>
    
    </body>
    </html>
    

      

    ng-options 与 ng-repeat

    我们也可以使用ng-repeat 指令来创建下拉列表:

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js"></script>
    </head>
    <body>
    
    <div ng-app="myApp" ng-controller="myCtrl">
    
    <select>
    <option ng-repeat="x in names">{{x}}</option>
    </select>
    
    </div>
    
    <script>
    var app = angular.module('myApp', []);
    app.controller('myCtrl', function($scope) {
        $scope.names = ["Google", "Runoob", "Taobao"];
    });
    </script>
    
    <p>该实例演示了使用 ng-repeat 指令来创建下拉列表。</p>
    
    </body>
    </html>
    

      

    ng-repeat 指令是通过数组来循环 HTML 代码来创建下拉列表,但 ng-options 指令更适合创建下拉列表,它有以下优势:

    使用 ng-options 的选项的一个对象, ng-repeat 是一个字符串。


    应该用哪个更好?

    假设我们使用以下对象:

    $scope.sites = [
        {site : "Google", url : "http://www.google.com"},
        {site : "Runoob", url : "http://www.runoob.com"},
        {site : "Taobao", url : "http://www.taobao.com"}
    ];
    

      ng-repeat 有局限性,选择的值是一个字符串:

    使用 ng-repeat:

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js"></script>
    </head>
    <body>
    
    <div ng-app="myApp" ng-controller="myCtrl">
    
    <p>选择网站:</p>
    
    <select ng-model="selectedSite">
    <option ng-repeat="x in sites" value="{{x.url}}">{{x.site}}</option>
    </select>
    
    <h1>你选择的是: {{selectedSite}}</h1>
    
    </div>
    
    <script>
    var app = angular.module('myApp', []);
    app.controller('myCtrl', function($scope) {
       $scope.sites = [
    	    {site : "Google", url : "http://www.google.com"},
    	    {site : "Runoob", url : "http://www.runoob.com"},
    	    {site : "Taobao", url : "http://www.taobao.com"}
    	];
    });
    </script>
    
    <p>该实例演示了使用 ng-repeat 指令来创建下拉列表,选中的值是一个字符串。</p>
    </body>
    </html>
    

      使用 ng-options:

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js"></script>
    </head>
    <body>
    
    <div ng-app="myApp" ng-controller="myCtrl">
    
    <p>选择网站:</p>
    
    <select ng-model="selectedSite" ng-options="x.site for x in sites">
    </select>
    
    <h1>你选择的是: {{selectedSite.site}}</h1>
    <p>网址为: {{selectedSite.url}}</p>
    
    </div>
    
    <script>
    var app = angular.module('myApp', []);
    app.controller('myCtrl', function($scope) {
       $scope.sites = [
    	    {site : "Google", url : "http://www.google.com"},
    	    {site : "Runoob", url : "http://www.runoob.com"},
    	    {site : "Taobao", url : "http://www.taobao.com"}
    	];
    });
    </script>
    
    <p>该实例演示了使用 ng-options  指令来创建下拉列表,选中的值是一个对象。</p>
    </body>
    </html>
    

      当选择值是一个对象时,我们就可以获取更多信息,应用也更灵活。

    数据源为对象

    前面实例我们使用了数组作为数据源,以下我们将数据对象作为数据源。

    $scope.sites = {
        site01 : "Google",
        site02 : "Runoob",
        site03 : "Taobao"
    };
    

      ng-options 使用对象有很大的不同,如下所示:

    使用对象作为数据源, x 为键(key), y 为值(value):

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js"></script>
    </head>
    <body>
    
    <div ng-app="myApp" ng-controller="myCtrl">
    
    <p>选择的网站是:</p>
    
    <select ng-model="selectedSite" ng-options="x for (x, y) in sites">
    </select>
    
    <h1>你选择的值是: {{selectedSite}}</h1>
    
    </div>
    
    <p>该实例演示了使用对象作为创建下拉列表。</p>
    
    <script>
    var app = angular.module('myApp', []);
    app.controller('myCtrl', function($scope) {
        $scope.sites = {
    	    site01 : "Google",
    	    site02 : "Runoob",
    	    site03 : "Taobao"
    	};
    });
    </script>
    
    </body>
    </html>
    

      

    你选择的值为在 key-value 对中的 value

    value 在 key-value 对中也可以是个对象:

    选择的值在 key-value 对的 value 中, 这是它是一个对象:

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js"></script>
    </head>
    <body>
    
    <div ng-app="myApp" ng-controller="myCtrl">
    
    <p>选择一辆车:</p>
    
    <select ng-model="selectedCar" ng-options="x for (x, y) in cars">
    </select>
    
    <h1>你选择的是: {{selectedCar.brand}}</h1>
    <h2>模型: {{selectedCar.model}}</h2>
    <h3>颜色: {{selectedCar.color}}</h3>
    
    <p>注意选中的值是一个对象。</p>
    </div>
    
    <script>
    var app = angular.module('myApp', []);
    app.controller('myCtrl', function($scope) {
        $scope.cars = {
            car01 : {brand : "Ford", model : "Mustang", color : "red"},
            car02 : {brand : "Fiat", model : "500", color : "white"},
            car03 : {brand : "Volvo", model : "XC90", color : "black"}
        }
    });
    </script>
    
    </body>
    </html>
    

      

    在下拉菜单也可以不使用 key-value 对中的 key , 直接使用对象的属性:

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js"></script>
    </head>
    <body>
    
    <div ng-app="myApp" ng-controller="myCtrl">
    
    <p>选择一辆车:</p>
    
    <select ng-model="selectedCar" ng-options="y.brand for (x, y) in cars"></select>
    <p>你选择的是: {{selectedCar.brand}}</p>
    <p>型号为: {{selectedCar.model}}</p>
    <p>颜色为: {{selectedCar.color}}</p>
    
    <p>下拉列表中的选项也可以是对象的属性。</p>
    
    </div>
    
    <script>
    var app = angular.module('myApp', []);
    app.controller('myCtrl', function($scope) {
        $scope.cars = {
            car01 : {brand : "Ford", model : "Mustang", color : "red"},
            car02 : {brand : "Fiat", model : "500", color : "white"},
            car03 : {brand : "Volvo", model : "XC90", color : "black"}
        }
    });
    </script>
    
    </body>
    </html>
    

      

  • 相关阅读:
    Java实现 蓝桥杯VIP 算法提高 P0404
    Java实现 蓝桥杯VIP 算法提高 P0404
    Java实现 蓝桥杯VIP 算法提高 P0404
    Java实现 蓝桥杯VIP 算法提高 P0404
    Java实现 蓝桥杯VIP 算法提高 P0404
    Java实现 蓝桥杯VIP 算法训练 排列问题
    Java实现 蓝桥杯VIP 算法训练 排列问题
    Java实现 蓝桥杯VIP 算法训练 排列问题
    Java实现 蓝桥杯VIP 算法训练 排列问题
    关于模态/非模态对话框不响应菜单的UPDATE_COMMAND_UI消息(对对WM_INITMENUPOPUP消息的处理)
  • 原文地址:https://www.cnblogs.com/Jerry-spo/p/5686586.html
Copyright © 2011-2022 走看看