我有一种奇怪的行为。
在视图中,我有以下代码:
<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?
答案 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>