奇怪的行为范围和ng-repeat在视图中,角度JS

时间:2016-04-09 00:51:34

标签: angularjs scope angularjs-scope angularjs-ng-repeat

我有一种奇怪的行为。

在视图中,我有以下代码:

<div class="form-group">

  <select class="form-control" name="name" id="repeatSelect" ng-model="selectedOption">
    <option ng-repeat="o in availableOptions" value="{{o}}">{{o.name}}</option>
      </select>
    </div>
<p>{{selectedOption}}</p>
<p>{{selectedOption.value}}</p>

在控制器中我有:

$scope.availableOptions= [
  {id: '1', name: 'name2', value:{w: 100, h: 250}},
  {id: '2', name: 'name1', value:{w: 200, h: 100}},
  ];
$scope.selectedOption = $scope.availableOptions[1];

问题如下:第一次前两个<p>(selectedOption和selectedOption.value)显示正确。但是,当我更改仅在选择<p>{{selectedOption}}</p>中的值时,<p>{{selectedOption.value}}</p>未显示任何内容。

任何帮助???

PD:使用ng-option进行选择是否有效,但为什么不使用ng-repeat?

2 个答案:

答案 0 :(得分:2)

我能想到的唯一解释是它将对象更改为字符串。你可以做的工作是在select和函数中创建ng-change="foo(selectedOption)",看起来像这样:

$scope.foo = function(val){
     $scope.selectedOption = angular.fromJson(val);   
}

修改

http://www.w3schools.com/tags/tag_option.asp从这里我们可以确认该值已转换为字符串。

答案 1 :(得分:0)

尝试将value属性更改为:

<div class="form-group">

  <select class="form-control" name="name" id="repeatSelect" ng-model="selectedOption">
    <option ng-repeat="o in availableOptions" ng-value="o.value">{{o.name}}</option>
      </select>
    </div>
<p>{{selectedOption}}</p>
<p>{{selectedOption.value}}</p>