AngularJs选择添加选项

时间:2015-05-15 07:18:30

标签: javascript html angularjs

我使用angularjs并选择选项集合。如果我添加了html选项标签,那么一切都很好。但是,如果我尝试从角度添加项目它不起作用。

我的代码:

<div ng-controller="statisticsTableController">
  <select ng-model="publishersdata" 
          ng-options="s for s in publishersdata"
          chosen option="publishersdata">
  </select>
</div>

和AngularJs代码:

function statisticsTableController($scope, $http) {
  var publishersArray = [];

  $http.get('/api/getAllItems').success(function(data) {  
    angular.forEach(data, function(data) {
      publishersArray.push(data.Name);
    });
  });

  this.publishersdata = publishersArray;
  //...
}

为什么它不起作用?以及如何解决它?

更新

更改后:

function statisticsTableController($scope, $http) {
    var publishersArray = [];

    $http.get('/api/getAllItems')
        .success(function (data) {
            angular.forEach(data, function (data) {
                publishersArray.push(data.Name);
            });
        });

    $scope.publishersdata = publishersArray;
    //...
}

HTML:

<div ng-controller="statisticsTableController">
  <select multiple 
          ng-model="publishersdata" 
          ng-options="s for s in publishersdata"
          chosen option="publishersdata">
  </select>
</div>

它无法正常工作

2 个答案:

答案 0 :(得分:1)

我看到的一个问题是,ng-modelng-options都指向同一个publishersdata对象,这可能是导致此操作的原因之一。您的ng-model应该是一个对象,其中包含下拉列表中选择的内容。

同样如上所述,您应将publishersdata附加到$scope,否则无法在HTML中访问

除此之外,这对我来说很好。

答案 1 :(得分:0)

在foreach的参数中尝试代码而不是数据使用值

angular.forEach(data, function (value) {
           publishersArray.push(value.Name);
 });