最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Pre-select option form ng-options list - Stack Overflow

programmeradmin1浏览0评论

I'm trying to preselect a item in the list which is generated by ng-options directive. Could someone please tell me whats happening in the plunker?

<head>
  <script src=".0.6/angular.min.js"></script>
  <script>
    function MyCntrl($scope) {
      $scope.prop = {
        "type": "select",
        "name": "Service",
        "values": [{
          'name': "Service 1"
        }, {
          'name': "Service 2"
        }, {
          'name': "Service 3"
        }, {
          'name': "Service 4"
        }]
      };
      $scope.selected1 = $scope.prop.values[1]
      $scope.selected2 = {
        "name": "Service 2"
      }

    }
  </script>
</head>

<body>

  <div ng-controller="MyCntrl">
    Works <br>
  <select ng-model="selected1" ng-options="v.name for v in prop.values">
    </select> {{selected1}} <br>
    Does not work. Why? <br>
    <select ng-model="selected2" ng-options="v.name  for v in prop.values">
    </select>
    {{selected2}}
  </div>
</body>
</html>

I'm trying to preselect a item in the list which is generated by ng-options directive. Could someone please tell me whats happening in the plunker?

http://plnkr.co/edit/GTnR76HEnB5NxQRe484m?p=preview

<head>
  <script src="http://ajax.googleapis./ajax/libs/angularjs/1.0.6/angular.min.js"></script>
  <script>
    function MyCntrl($scope) {
      $scope.prop = {
        "type": "select",
        "name": "Service",
        "values": [{
          'name': "Service 1"
        }, {
          'name': "Service 2"
        }, {
          'name': "Service 3"
        }, {
          'name': "Service 4"
        }]
      };
      $scope.selected1 = $scope.prop.values[1]
      $scope.selected2 = {
        "name": "Service 2"
      }

    }
  </script>
</head>

<body>

  <div ng-controller="MyCntrl">
    Works <br>
  <select ng-model="selected1" ng-options="v.name for v in prop.values">
    </select> {{selected1}} <br>
    Does not work. Why? <br>
    <select ng-model="selected2" ng-options="v.name  for v in prop.values">
    </select>
    {{selected2}}
  </div>
</body>
</html>
Share Improve this question asked Mar 10, 2015 at 6:39 SudhakarSudhakar 3,0948 gold badges35 silver badges48 bronze badges
Add a ment  | 

2 Answers 2

Reset to default 8

Bijay Rai's statement is correct but not full answer.

ngOption has rather plicated expressions and you should bother to examine documentation. If you change the way the option's object is being tracked you can avoid using same object by reference as stated. For example, use select as pattern

<select ng-model="selected2" ng-options="v.id as v.name for v in prop.values">
</select>

Then you can simply assign selected like this:

  $scope.selected2 = 3;

Updated plunkr

$scope.prop = {
        "type": "select",
        "name": "Service",
        "values": [{
          'name': "Service 1"
        }, {
          'name': "Service 2"
        }, {
          'name': "Service 3"
        }, {
          'name': "Service 4"
        }]
      };

ng-options getting data from prop.values.... so selected1 is working cause it is predefined as $scope.prop.values[1]

whereas selected2 is not referring to data inside prop.values.....

发布评论

评论列表(0)

  1. 暂无评论