【问题标题】:Dynamically create Select boxes and assign values动态创建选择框并分配值
【发布时间】:2020-03-22 05:52:01
【问题描述】:

在 Angular app.js 中,我动态地将多个选择框放置在具有唯一 ID 的表单中。如何获取在控制器内的那些选择框上选择的值。

添加了一个变量

$scope.sibling_type = {};

加载选择框的Javascript代码。

$scope.linkSiblingFinish = function(sibling){
   var str_siblingtype = "<div class='col-sm-2' style='margin-bottom:15px'>" +
     "<select ng-model='sibling_type[" + sibling.id + "]' class='form-control' id='sibling_type_"+sibling.id+"'>" +
       "<option class='ng-binding ng-scope' value='1'>Sister->Brother</option>" +
       "<option class='ng-binding ng-scope' value='2'>Brother->Sister</option>" +
       "<option class='ng-binding ng-scope' value='3'>Sister->Sister</option>" +
       "<option class='ng-binding ng-scope' value='4'>Brother->Brother</option>" +
     "</select></div>";

    document.getElementById('div_siblings').innerHTML = str_siblingtype;
}

上面的脚本将在按钮点击时被调用,变量“sibling”每次都会被加载不同的“id”。假设它已经被调用了 2 次,id 分别为 '23' 和 '24'。将有 2 个选择框,分别为“sibling_type_23”和“sibling_type_24”。

提交按钮

$scope.saveSibling = function(data){
    dataFactory.httpRequest('index.php/students/sibling/'+$scope.form.id,'POST',{},$scope.form).then(function(data) {
    });
}

我如何绑定/分配选项值,以便在提交表单时我可以在 Laravel 控制器内的那些选择框中获取选定的选项。

【问题讨论】:

    标签: javascript angularjs angular-ngmodel


    【解决方案1】:

    您可以为此使用不同的方法:

    1. 在您的控制器内创建一个新的“sibling_type”范围。

      $scope.sibling_type = {};
      
    2. 接下来,为linkSiblingFinish 内的所有动态选择更新ng-model,例如:

      "<select ng-model='sibling_type[" + sibling.id + "]' 
               class='form-control' id='sibling_type_"+sibling.id+"'>" +
      
    3. 现在,提交表单后,您可以在这些选择框中获取选定的选项。喜欢:

      var sibling_type_23 = $scope.sibling_type['23'];
      var sibling_type_24 = $scope.sibling_type['24'];
      

    演示:

    const app = angular.module('myApp', []);
    app.controller('AppCtrl', function ($scope) {
      $scope.siblings = [{id: 23,name: 'Sibling 23'},{id: 24,name: 'Sibling 24'}];
      $scope.sibling_type = {};
    });
    <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.7.5/angular.min.js"></script>
    <div ng-app="myApp">
      <div ng-controller="AppCtrl">
        <table border="0" cellpadding="0" cellspacing="0" width="100%">
          <tr ng-repeat="sibling in siblings">
            <td>{{sibling.name}}:</td>
            <td><input type="text" ng-model="sibling_type[sibling.id]" placeholder='Type here..' /></td>
          </tr>
        </table>
        <pre>{{sibling_type | json }}</pre>
      </div>
    </div>

    【讨论】:

    • @palasH 我尝试了代码,但无法获取值。进一步增强了问题。可以请支持。谢谢。
    猜你喜欢
    • 2016-05-05
    • 2020-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-31
    • 1970-01-01
    相关资源
    最近更新 更多