将数组绑定到角度中的选项不起作用

时间:2014-09-07 01:00:19

标签: angularjs

我有一个控制器定义为

 var searchController = function ($scope, $http) {
    $scope.modSelectedState = null;
    $scope.states = [];
    $http.get('./data/states.js')
       .success(function (data) {
           $scope.states = data.locations;
       })
}

现在它的工作是填充我从本地文件中成功使用的状态列表。

然后,我的HTML文件中包含此代码:

 <select ng-model="modSelectedState" id="selectState" name="selectState"
         ng-options="state as state.name for state in states">
          <option value="">Select state...</option>
 </select>

我无法上班。 我知道我的控制器已正确定义并且数组已成功填充,因为我尝试了以下代码并且工作正常:

<ul ng-repeat="state in states">
       <li>{{state.name}}</li>
 </ul>

我将此代码放在同一控制器范围内的选项代码之前。

我的数组中的JSON对象如下所示:

   {
        "lat": 35.02499,
        "long": -84.92153,
        "name": "Alabama",
        "short": "AL"
    }

无法弄清楚它为什么不起作用..

1 个答案:

答案 0 :(得分:2)

而不是

ng-options="state as state.name for state in states"

ng-options="state.name for state in states"

关于modSelectedState,请尝试以下操作:

...
   .success(function (data) {
       $scope.states = data.locations;
       $scope.modSelectedState = $scope.states[1];  // 1 is just an arbitrary element
'''

请参阅Angular docs and examples