2015-08-05 5 views
1

Я создал простой мультивыбор без расширения ui-bootstrap, используя ng-change в сочетании с ng-repeat в элементе tr. Я могу выбрать несколько дат и нажать все даты в массив таблиц. Но splice(), который удаляет элемент и pop(), который пустет массив, не работает вообще.Angularjs Multiselect datepicker array

Вот ссылка, которая поддерживает Множественный путем расширения самозагрузки plnkr.co/iVSdXt

Мой контроллер:

angular.module('app', ['gm.datepickerMultiSelect']) 
.controller('AppCtrl', function() { 
    this.activeDate; 
    this.selectedDates = [new Date().setHours(0, 0, 0, 0)]; 
    this.type = 'individual'; 

    this.identity = angular.identity; 

    this.removeFromSelected = function(dt) { 
    this.selectedDates.splice(this.selectedDates.indexOf(dt), 1); 
    } 
}); 
+0

Кажется, что ваш код хорошо работает. – Joy

+0

Затем покажите код, который не работает. – Joy

+0

Я рад помочь, но, возможно, лучше задать другой вопрос. И сделайте это более понятным: «избегайте этого» означает избегать правостороннего щелчка или избегать левого и правого кликов? – Joy

ответ

0

Проверить работает демо: Plunker

Прежде всего, ng-change requires ng-model:

Note, this directive requires ngModel to be present.

Так приходит ваша ошибка:

Controller 'ngModel', required by directive 'ngChange', can't be found!

Добавить ng-model как:

<tr ng-repeat="d in frompickers" ng-model="selectedDate" 
    ng-change="fromdatepickers(calDate)"> 

Во-вторых, изменить ваш контроллер:

angular.module('app', []) 
    .controller('AppCtrl', function($scope) { 
    $scope.frompickers = []; 
    $scope.remove = function(index) { 
     $scope.frompickers.splice(index, 1); 
    } 
    $scope.reset = function() { 
     while ($scope.frompickers.length > 0) { 
     $scope.frompickers.pop(); 
     } 
    }; 
    $scope.fromdatepickers = function(calDate) { 
     var cdate = new Date(calDate); 
     $scope.frompickers.push(cdate); 
    }; 
    }); 

В коде, вы определяете $scope.frompickers = []; внутри функции $scope.fromdatepickers, что создает новый массив каждый раз. Таким образом, массив всегда имеет только один член.

Смежные вопросы