angular ディレクティブ ng-options の使用方法

小云云
リリース: 2018-02-06 09:10:38
オリジナル
1846 人が閲覧しました

ng-options ディレクティブの目的:

式で配列またはオブジェクトを使用して、選択内のオプションのリストを自動的に生成します。 ng-options は ng-repeat に非常に似ており、多くの場合、ng-options の代わりに ng-repeat を使用できます。ただし、ng-options には、メモリの削減や速度の向上、ユーザーが選択できる選択ボックスのオプションの提供など、いくつかの利点があります。 select でオプションが選択されると、オプションは ng-model を使用して対応するデータに自動的にバインドされます。デフォルト値を設定したい場合は、$scope.selected = $scope.collection[3] のように設定できます。

この記事では主にangularコマンドnote ng-optionsの使い方を紹介していますが、編集者がとても良いと思ったので、参考にさせていただきます。編集者をフォローして見てみましょう。皆さんのお役に立てれば幸いです。

1.1 track by の目的:

track by は主に値の重複を防ぐことであり、angularjs はエラーを報告します。データ追跡を容易にするために、angularjs は生成された dom にバインドする一意の値を必要とするためです。例: items=["a", "a", "b"] であるため、ng-repeat="item in items" ではエラーが発生するため、項目追跡では ng-repeat="(key, value) を使用してください。 key」エラーは発生しません。

1.2 ng-optionの使用上の注意

それを使用する場合は、ng-model命令を追加する必要があります。そうでない場合、それは使用されず、エラーが報告されます

2。選択ドロップダウン ボックスの値はそれぞれを表しますか?

最も単純なものを最初に作成します。 最も独創的な選択ドロップダウン ボックス


<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>label 和 value 具体是什么</title>
</head>
<body>
  <select>
    <!-- 
      value 是存储到数据库中的值,label是显示在页面上的值 
      value 就是 1、2、3、4这些数值;
      lable 是"语文" “数学”这些
    -->
    <option value="1">语文</option>
    <option value="2">数学</option>
    <option value="3">英语</option>
    <option value="4">生物</option>
  </select>
</body>
</html>
ログイン後にコピー

次に、angular を導入し、ng-options ディレクティブを使用してドロップダウン ボックスを生成しますページを生成するコードを見てください


<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  <title>label 和 value 具体是什么</title>
  <script type="text/javascript" src="../js/angular-1.3.0.js"></script>
</head>

<body ng-app="myapp">
  <p ng-controller="mainCtrl">
    <select>
      <!-- 
      value 是存储到数据库中的值,label是显示在页面上的值 
      value 就是 1、2、3、4这些数值;
      lable 是"语文" “数学”这些
  -->
      <option value="1">语文</option>
      <option value="2">数学</option>
      <option value="3">英语</option>
      <option value="4">生物</option>
    </select>
    <br>
    <br>
    <br>
    <p>{{ selectedCity }}
      <br>
      <!-- 这里  c.id as c.city for c in obj  我们使用 obj 对象的 id作为select的value,使用obj 的city 作为 select 的label -->
      <select ng-options="c.id as c.city for c in obj" ng-model="selectedCity">
      </select>
    </p>
  </p>


  <script type="text/javascript">
  var myapp = angular.module(&#39;myapp&#39;, []);
  myapp.controller(&#39;mainCtrl&#39;, [&#39;$scope&#39;, function($scope) {
    $scope.selectedCity = "bj";
    $scope.obj = [
      { "id": "bj", "city": "北京" },
      { "id": "sh", "city": "上海" },
      { "id": "zz", "city": "郑州" }

    ];
  }])
  </script>
</body>

</html>
ログイン後にコピー

プレビュー ページの効果を見て、後で追加するために使用します。ng-options によって生成された選択では、obj オブジェクトの ID を値として使用します。

3. ng-options の 3 つの一般的なメソッド:


<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  <title>label 和 value 具体是什么</title>
  <script type="text/javascript" src="../js/angular-1.3.0.js"></script>
  <style type="text/css">
  .mart30 {
    margin-top: 30px;
    border-top: 1px solid #000;
  }
  </style>
</head>

<body ng-app="myapp">
  <p ng-controller="mainCtrl">
    <select>
      <!-- 
      value 是存储到数据库中的值,label是显示在页面上的值 
      value 就是 1、2、3、4这些数值;
      lable 是"语文" “数学”这些
  -->
      <option value="1">语文</option>
      <option value="2">数学</option>
      <option value="3">英语</option>
      <option value="4">生物</option>
    </select>
    <p class="mart30">
      <h3>演示 label 和 value 值的变化</h3> {{ selectedCity }}
      <!-- 这里  c.id as c.city for c in obj  我们使用 obj 对象的 id作为select的value,使用obj 的city 作为 select 的label -->
      <select ng-options="c.id as c.city for c in obj1" ng-model="selectedCity">
      </select>
    </p>
    <p class="mart30">
      <h3>1. “数组”实现基本下拉</h3>
      <p>语法: laber for value in array</p>
      <select ng-options="animal for animal in arr1" ng-model="selectedAnimal"></select>
      <br>
    </p>
    <p class="mart30">
      <h3>2. “包含对象的数组”实现“label 和 value值不同”的下拉</h3>
      <p>语法: select as label for value in array</p>
      <p>哪位同学你认识?你的选择是:{{selectedStu}}</p>
      <select ng-options="c.name as c.id for c in obj2" ng-model="selectedStu"></select>
      <br>
      <br>
      <br>
      <p><strong>自定义下拉显示内容格式</strong></p>
      <p>哪位同学你认识?你的选择是:{{selectedStuString}}</p>
      <p>语法:拼接字符串</p>
      <select ng-options="c.name as (c.name +&#39;- 英文名:&#39;+c.id) for c in obj2" ng-model="selectedStuString"></select>
      <br>
      <br>
      <br>
      <p><strong>使用group by对下拉菜单分组</strong></p>
      <p>语法:label group by groupName for value in array</p>
      <p>哪位同学你认识?你的选择是:{{selectedStuString2}}</p>
      <select ng-options="c.name group by c.sex for c in obj2" ng-model="selectedStuString2"></select>
    </p>
    <p class="mart30">
      <h3>3. “对象”实现基本下拉</h3>
      <p>语法 1: label for (key , value) in object</p>
      <p>哪个城市?你的选择是:{{scity}}</p>
      <select ng-options="key for (key , value) in obj3" ng-model="scity"></select>
      <p>语法 2: select as label for (key ,value) in object</p>
      <p>哪个城市?你的选择是:{{scity01}}</p>
      <select ng-options="value as key for (key , value) in obj3" ng-model="scity01"></select>
    </p>
  </p>
  <script type="text/javascript">
  var myapp = angular.module(&#39;myapp&#39;, []);
  myapp.controller(&#39;mainCtrl&#39;, [&#39;$scope&#39;, function($scope) {
    //定义包含对象的数组 obj1
    $scope.obj1 = [
      { "id": "bj", "city": "北京" },
      { "id": "sh", "city": "上海" },
      { "id": "zz", "city": "郑州" }
    ];
    $scope.selectedCity = "bj";

    // 定义数组
    $scope.arr1 = ["大白", "阿狸", "熊猫"];
    //定义默认为 “大白”
    $scope.selectedAnimal = "大白";

    //定义包含对象的数组 obj2
    $scope.obj2 = [
      { "id": "lilei", "name": "李雷", "sex": "man" },
      { "id": "hanmeimei", "name": "韩梅梅", "sex": "woman" },
      { "id": "jack", "name": "杰克", "sex": "man" }
    ];
    $scope.selectedStu = "韩梅梅";

    //定义简单对象 obj3
    $scope.obj3 = {
      "湖北": "鄂",
      "广东": "粤",
      "河南": "豫"
    };
  }])
  </script>
</body>

</html>
ログイン後にコピー

オブジェクトのキーと値についての簡単な説明。使用方法

4. ng-optionsのすべての使用補足

赤い部分のコードに例がありますので、残りは自分で消化して理解してください

配列の場合: 配列の値のVlabel

  • 配列の値のラベルとして選択

  • 配列の値のグループごとのラベル

  • 値のラベルを無効にする

  • 配列の値のグループごとのラベル track by trackexpr

  • 配列の値に対して無効にする場合はラベルを無効にします trackexpr によってトラックします

  • 配列の値に対してラベルを無効にする | orderBy:orderexpr track by trackexpr (track by でフィルターを含める場合)

  • オブジェクトの場合:

オブジェクトの(key、value)のラベル

  • オブジェクトの(key、value)のラベルとして選択

  • オブジェクトの(key、value)のグループごとのラベル

  • ラベルを無効にする場合オブジェクトの (キー、値) を無効にする

  • オブジェクトの (キー、値) をグループごとにラベルとして選択する

  • オブジェクトの (キー、値) を無効にする場合はラベルとして選択する

  • 関連推奨事項:

  • AngularJSのng-optionsディレクティブの詳細な説明

ng-repeatとng-optionsの違い

AngularJSはng-Optionsのインデックス追加ソリューションで実装されています

以上がangular ディレクティブ ng-options の使用方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート