2016-01-21 95 views
0

我无法访问angularjs中的javascript对象属性。无法通过angularjs访问javascript对象属性

我有以下的HTML显示一个下拉列表与角HTTP调用加载所有省份:

$http.get("http://myRestUrl/province").then(function(response) 
{ 
    $scope.provinces = angular.fromJson(response.data); 
}); 

<select class="form-control" ng-model="selectedProvince"> 
    <option value="" selected>Bundesland auswählen</option> 
    <option ng-repeat="province in provinces" value="{{province}}"> 
    {{province.name}} 
    </option> 
</select> 

{{selectedProvince}} <!-- Output the Object --> 
{{selectedProvince.cities}} <!-- Output nothing --> 

全省对象看起来是这样的:

{"id":1,"name":"North Rhine-Westphalia","nation":{"id":1,"name":"Germany"},"cities": 
[{"id":1,"name":"Münster","province":{"id":1,"name":"North Rhine-Westphalia"}}, 
{"id":2,"name":"Rinkerode", "province":{"id":1,"name":"North Rhine-Westphalia"}}]} 

访问{{selectedProvince.name}}或任何其他财产也是空的结果。

selectedProvince在$ scope中定义!

有人有任何想法如何我可以访问这些数据?

+1

想这是因为你的HTTP调用。它返回一个承诺。在你的HTTP响应中使用'.then()'可能会解决你的问题,但我不完全确定是诚实的。只是值得一试。 – Aer0

+0

你的'selectedProvince'是一个字符串吗? 'JSON.parse(selectedProvince)'然后允许你访问属性吗? –

+0

'value =“{{province}}”'将无法正常工作,因为它会将整个对象渲染为一个字符串。看看['ng-options'](https://docs.angularjs.org/api/ng/directive/ngOptions) – Rhumborl

回答

0

value="{{province}}"将无法​​正常工作,因为它会将整个对象渲染为字符串。 对于非字符串值,您需要查看ng-options

这应该为你工作:

<select class="form-control" ng-model="selectedProvince" 
    ng-options="province.name for province in provinces"> 
    <option value="" selected>Bundesland auswählen</option> 
</select>