首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将数组数据绑定到angularjs中的下拉列表中?

问如何将数组数据绑定到angularjs中的下拉列表中?
EN

Stack Overflow用户
提问于 2017-05-25 06:31:35
回答 5查看 2.1K关注 0票数 0

你好,我正在用angularjs开发web应用程序。我正在尝试将数据绑定到drodpown。我正在进行ajax调用以从服务器获取数据。我得到错误不能读取属性‘长度’的未定义。我在提出请求。这是我的api。http://192.168.0.213:1234/api/Customer/Nationalities

上述api将返回

代码语言:javascript
复制
{"status":"Success","msg":"Success","code":"200","data":[{"ID":1,"Nationality":"indian"},{"ID":2,"Nationality":"england"}]}

我使用js绑定,如下所示。

代码语言:javascript
复制
  var url = cfg.Baseurl;
            var nationality = new Array();
            $http.get(url + 'api' + '/Customer/' + 'Nationalities').success(function (data) {
                $.map(data.data.Nationality, function (item) {
                    nationality.push(item);
                    console.log(item);
                });
                $scope.nationalityList = nationality;
            }).error(function (status) {
            });

这是我的html代码。

代码语言:javascript
复制
   <select ng-model="user.nationality" id="brand" ng-options="user.nationality for user in nationalityList" required>
                            <option value="" label="Select">Select</option>
                        </select>

最后,我无法读取未定义错误的属性“长度”。任何帮助都将不胜感激。谢谢。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2017-05-25 06:39:14

下面是演示链接Jsfiddle演示

JS代码

代码语言:javascript
复制
  var app = angular.module('myApp', []);

  app.controller('ctrl', function($scope) {
    $scope.nationalityList = {
      "status": "Success",
      "msg": "Success",
      "code": "200",
      "data": [{
        "ID": 1,
        "Nationality": "indian"
      }, {
        "ID": 2,
        "Nationality": "england"
      }]
    };
  });

** HTML **

代码语言:javascript
复制
  <div ng-app='myApp'>

    <div ng-controller='ctrl'>
      <select ng-model="user.nationality" id="brand" ng-options="user.Nationality for user in nationalityList.data" required>
        <option value="" label="Select">Select</option>
      </select>
      <span>nationality = {{user.nationality}}</span>
    </div>
  </div>

希望这能帮到你

票数 1
EN

Stack Overflow用户

发布于 2017-05-25 06:52:48

在这种情况下,不需要映射,它只分配数组的值。

代码语言:javascript
复制
var url = cfg.Baseurl;
var nationality = [];
$http.get(url + 'api' + '/Customer/' + 'Nationalities')
.success(function (data) {
    if(data.data) {
        // Here the value is assigned
        $scope.nationalityList = data.data;
    }
}).error(function (status) { });

你的html必须是这样的

代码语言:javascript
复制
<select
    ng-model="selectedNationality"
    id="brand"
    ng-options="item.Nationality for item in nationalityList" 
    required>
    <option value="" label="Select">Select</option>
</select>
<!-- Showing selected option -->
<p ng-if="selectedNationality">Selected option: {{selectedNationality}}<p/>

有关更多信息,https://docs.angularjs.org/api/ng/directive/ngOptions

票数 1
EN

Stack Overflow用户

发布于 2017-05-25 06:57:08

由于未初始化$scope.nationalityList,因此在呈现视图时未定义它。因此出现了错误Cannot read property 'length' of undefined error.。

只需将变量初始化为空数组即可解决此错误。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44173777

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档