javascript - 获取 AngularJS 中动态生成的下拉列表的选定值

标签 javascript jquery angularjs

我有这个表单,用户可以在其中上传文章,并且可以选择添加一些共同作者。如果他想添加共同作者,他将单击一个按钮,该按钮将动态生成一个包含其他用户列表的下拉菜单。

问题是我动态生成这些选择菜单,因此每个菜单都有不同的 ng-model。这是 Controller 中的代码:

$scope.numberOfCoauthors = 0;
$scope.addCoauthors = function() {
    $scope.index = "input_" + $scope.numberOfCoauthors;
    console.log("Scope.model : " + $scope.index);
    var $div = $("<p> Coautor: </p> <select ng-model='" + $scope.index + "'" +
            " ng-options='user.username for user in allUsers'  </select>" +
            "<pre> {{ " + $scope.index + " | json }} </pre>")
    var target = angular.element(document.querySelector('#coauthors'));

    angular.element(target).injector().invoke(function($compile) {
        var addedSelect = angular.element(target).scope();
        target.append($compile($div)(addedSelect));
        //$scope.$apply();
      });
    $scope.numberOfCoauthors++;
}

 $scope.getSelectedValues = function () {
     if( $scope.numberOfCoauthors > 0) {
         for(i=0; i<$scope.numberOfCoauthors; i++) {
             var inputName = "input_"+i;
             console.log(inputName);
             console.log($scope.inputName);
         }

     }
 }

当我尝试获取 $scope.inputName 的值时,我得到了未定义的值,所以我认为这些模型实际上并未添加到范围中,但我真的不知道如何添加他们。

最佳答案

var myApp = angular.module('myApp',[]);

myApp.controller('controller', ['$scope', function($scope) {
  $scope.users = [{id:1,username:"julien"},{id:2,username:"robert"}];
  
  $scope.coAuthors = [];
  $scope.coAuthor = {};
  
  $scope.addCoauthor = function(){
    $scope.coAuthors.push($scope.coAuthor);
  };
  
  $scope.coAuthorShow = false;

  
}]);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="myApp" ng-controller="controller">
  <div ng-show="coAuthorShow">
  <div ng-repeat="coA in coAuthors">{{coA.username}}</div>
  <select name="mySelect" id="mySelect"
      ng-options="user.username for user in users"
      ng-model="coAuthor"></select>
  <button ng-click="addCoauthor()">ADD CoAuthor</button>
  </div>
  <button ng-click="coAuthorShow = !coAuthorShow">Add coAuthors</button>
</div>

你可以做类似的事情,创建选择并隐藏他

关于javascript - 获取 AngularJS 中动态生成的下拉列表的选定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43000354/

相关文章:

javascript - 供离线使用的 MDN javascript 文档

javascript - 防止多次点击,直到 .toggle() 生效为止

javascript - 如何使用 ng-repeat 从表中动态创建的输入框中获取输入值?

javascript - 无法读取 'undefined' 的属性推送

javascript - 如何调用包装在 jQuery 函数中的 JavaScript 方法

javascript - 如何在 userInput 中间获取一些值

javascript - 确定 super() 是否从继承类中调用

jquery - 正则表达式匹配 @"*"

javascript - 加载图表时出错未捕获类型错误 : Cannot read property 'toLowerCase' of undefined

javascript - 使用 AngularJS 合并来自 WP-API 的结果