151

ここで Angular select ディレクティブのドキュメントを見てきました: http://docs.angularjs.org/api/ng.directive:select。デフォルト値の設定方法がわかりません。これは紛らわしいです:

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

オブジェクトは次のとおりです。

{
    "type": "select", 
    "name": "Service",
    "value": "Service 3", 
    "values": [ "Service 1", "Service 2", "Service 3", "Service 4"] 
}

HTML(作業中):

<select><option ng-repeat="value in prop.values">{{value}}</option></select>

次に、 select 要素内に ng-option 属性を追加して、デフォルトのオプションとして設定しようとしてprop.valueいます (機能していません)。

ng-options="(prop.value) for v in prop.values"

私は何を間違っていますか?

4

12 に答える 12

132

したがって、オブジェクトがスコープ内にあると仮定します。

<div ng-controller="MyCtrl">
  <select ng-model="prop.value" ng-options="v for v in prop.values">
  </select>
</div>

 

function MyCtrl($scope) {
  $scope.prop = {
    "type": "select", 
    "name": "Service",
    "value": "Service 3", 
    "values": [ "Service 1", "Service 2", "Service 3", "Service 4"] 
  };
}

作業中の Plunkr: http://plnkr.co/edit/wTRXZYEPrZJRizEltQ2g

于 2013-06-26T20:29:24.310 に答える
69

select *のAngularドキュメントは、この質問に明示的に答えていませんが、そこにあります。を見ると、次のように表示されますscript.js

function MyCntrl($scope) {
  $scope.colors = [
    {name:'black', shade:'dark'},
    {name:'white', shade:'light'},
    {name:'red', shade:'dark'},
    {name:'blue', shade:'dark'},
    {name:'yellow', shade:'light'}
  ];
  $scope.color = $scope.colors[2]; // Default the color to red
}

これはhtmlです:

<select ng-model="color" ng-options="c.name for c in colors"></select>

<select>これは、 with で選択した値をデフォルトにするより明白な方法のようですng-options。また、ラベル/値が異なる場合にも機能します。

*これはAngular 1.2.7からのものです

于 2013-12-26T19:55:18.197 に答える
22
<select name='partyid' id="partyid" class='span3'>
<option value=''>Select Party</option>
<option ng-repeat="item in partyName" value="{{item._id}}" ng-selected="obj.partyname == item.partyname">{{item.partyname}}
</option>
</select>
于 2014-05-02T10:06:30.360 に答える
21

オブジェクトの配列が次のように複雑な場合:

$scope.friends = [{ name: John , uuid: 1234}, {name: Joe, uuid, 5678}];

現在のモデルは次のように設定されていました。

$scope.user.friend = {name:John, uuid: 1234};

track byng-model="user.friend" にも uuid がある限り、uuid (または一意のフィールド) で関数を使用するのに役立ちました。

<select ng-model="user.friend" 
ng-options="friend as friend.name for friend in friends track by friend.uuid"> 
</select>
于 2015-04-20T18:55:59.363 に答える
10
<select id="itemDescFormId" name="itemDescFormId" size="1" ng-model="prop" ng-change="update()">
    <option value="">English(EN)</option>
    <option value="23">Corsican(CO)</option>
    <option value="43">French(FR)</option>
    <option value="16">German(GR)</option>

空の値でオプションを追加するだけです。それが動作します。

デモプランク

于 2016-06-10T11:22:23.297 に答える
10

私はこれに数時間苦労したので、いくつかの説明を追加したいと思います。ここに記載されているすべての例は、サービスやデータベースからのものではなく、スクリプト自体からデータがロードされる場合を指しています。ですから、私と同じ問題を抱えている人に私の経験を提供したいと思います。

通常、データベースには目的のオプションの ID のみを保存するので、それを表示しましょう

service.js

myApp.factory('Models', function($http) {
var models = {};
models.allModels = function(options) {
    return $http.post(url_service, {options: options});
};

return models;
});

controller.js

myApp.controller('exampleController', function($scope, Models) {
$scope.mainObj={id_main: 1, id_model: 101};
$scope.selected_model = $scope.mainObj.id_model;
Models.allModels({}).success(function(data) {
    $scope.models = data; 
});
});

最後に、部分的な html model.html

Model: <select ng-model="selected_model" 
ng-options="model.id_model as model.name for model in models" ></select>

基本的に私はその部分を「model.id_modelをモデルのモデルのmodel.nameとして」「model.id_model 」は「 mainObj.id_model」と一致させることができるように値にモデルのIDを使用することを指摘したかった「selected_model」、これは単純な値です。また、「model.name」はリピーターのラベルです。最後に「model in models」は、私たちが知っている通常のサイクルです。

これが誰かの役に立てば幸いです。そうであれば、投票してください:D

于 2014-07-31T22:27:03.017 に答える
9

これを行う簡単な方法は、次のようにdata-ng-initを使用することです。

<select data-ng-init="somethingHere = options[0]" data-ng-model="somethingHere" data-ng-options="option.name for option in options"></select>

ここでの主な違いは、含める必要があることです。data-ng-model

于 2015-07-14T18:12:54.410 に答える
4

ng-model属性は、選択したオプションを設定し、orderBy:orderModel.valueのようなフィルターをパイプすることもできます

index.html

<select ng-model="orderModel" ng-options="option.name for option in orderOptions"></select>

controllers.js

$scope.orderOptions = [
    {"name":"Newest","value":"age"},
    {"name":"Alphabetical","value":"name"}
];

$scope.orderModel = $scope.orderOptions[0];
于 2015-06-12T21:48:21.820 に答える