【问题标题】:Dynamically added using angular bootstrap date-time-picker not working使用角度引导日期时间选择器动态添加不起作用
【发布时间】:2016-06-29 06:55:30
【问题描述】:

我用过date time picker。当我将它用作静态时,它工作正常。当我动态添加输入字段时,如何使其工作。 HTML

<div class="form-group" ng-repeat="item in items">
        <div class="row" style="margin: 15px 0px;">
            <div class="col-md-6 col-lg-6 col-sm-6" style="padding-left:0">

                <label>Start Date</label>
                <p class="input-group">
                    <input type="text" class="form-control" datetime-picker="dd/MM/yyyy" enable-time="false" ng-model="item['start_date'+$index]" is-open="['start_date'+$index].open"  />

                    <span class="input-group-btn">
                        <button type="button" class="btn btn-default" ng-click="openCalendar($event, 'start_date',$index)"><i class="fa fa-calendar"></i></button>
                    </span>
                </p>

            </div>
      </div>
</div>
    <button ng-click="add()">Add New Row</button>

控制器

          $scope.items = [];
    $scope.add = function() {
        $scope.items.push({
            start_date:"",
        });
    }
    $scope.openCalendar = function(e,picker,index) {
        console.log('index',index);
           console.log('picker',picker);
        var picker_index=picker+index;
        console.log($scope[picker_index])
        $scope.[picker_index]open = true;
        console.log( $scope[picker][index])
    };

plunker here

我无法使用 ng-model 和 is-open 属性中的索引值打开特定的日期选择器。因为日期选择器是动态添加的。谁能帮我解决这个问题。

【问题讨论】:

    标签: angularjs dynamic datepicker angular-bootstrap


    【解决方案1】:

    为每个 isOpen 创建新变量并使其适用于 ng-click。看看有帮助 更新了 plunkr http://plnkr.co/edit/dSqX4O?p=preview

     <div class="form-group" ng-repeat="item in items">
        <div class="row" style="margin: 15px 0px;">
            <div class="col-md-6 col-lg-6 col-sm-6" style="padding-left:0">
    
                <label>Start Date</label>
                <p class="input-group">
                    <input type="text" class="form-control" datetime-picker="dd/MM/yyyy" enable-time="false" ng-model="item['start_date'+$index]" is-open="isOpen1"  />
    
                    <span class="input-group-btn">
                        <button type="button" class="btn btn-default"  ng-click="isOpen1= true")"><i class="fa fa-calendar"></i></button>
                    </span>
                </p>
    
            </div>
      </div>
    

    添加新行

    var app = angular.module('app', ['ui.bootstrap', 'ui.bootstrap.datetimepicker']);
    

    app.controller('MyController', ['$scope', function($scope) {

    // $scope.openCalendar = function(e,index, picker) {
    //   console.log('index',index)
    //   $scope.isOpen1.index=false;
    //   // $scope[picker][index].open = true;
    // };
        $scope.items = [];
        $scope.add = function() {
            $scope.items.push({
                start_date:"",
    
    
            });
        }
    

    }]);

    【讨论】:

    • 当我添加ng-click="isOpen1+$index= true"时出现这样的错误angular.js:13642 Error: [$parse:lval] http://errors.angularjs.org/1.5.6/$parse/lval
    • 这个方法不行,能告诉我为什么
    • 我添加了 plunker ,你能更新一下 plunker 吗
    猜你喜欢
    • 1970-01-01
    • 2016-10-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多