代码之家  ›  专栏  ›  技术社区  ›  learner

如果超出限制,AngularJS ui select multiple应显示警报

  •  0
  • learner  · 技术社区  · 2 年前

    在AngularJS ui select multiple中,我可以为其添加限制或创建警报。但我不能两者兼得。如果显示警报,则不会从UI中清除之前选择的选项。代码笔: https://codepen.io/pragatij55/pen/mdpzmqp

    我知道我可以使用limit=“2”,但我也需要一个提醒。

    <div ng-app="demo" class="ng-cloak" ng-controller="DemoCtrl">
      
      <ui-select multiple ng-model="myModel" theme="bootstrap" ng-disabled="disabled" close-on-select="false" style="width: 800px;" on-select="changed(myModel)" title="Choose a person">
        <ui-select-match placeholder="Select person...">{{$item.name}}</ui-select-match>
        <ui-select-choices repeat="person.name as person in people | propsFilter: {name: $select.search, type: $select.search}">
          <div ng-bind-html="person.name | highlight: $select.search"></div>
          <small>
           
            type: <span ng-bind-html="''+person.type | highlight: $select.search"></span>
          </small>
        </ui-select-choices>
      </ui-select>
      
    </div>
    

    JS:

    app.controller('DemoCtrl', function ($scope, $http, $timeout, $interval) {
      $scope.people = [
        { name: 'var1',      type: 'header' },
        { name: 'var2',  type: 'site' },
        { name: 'var3',  type:'header' },
        { name: 'var4',  type:'header' }
      ];
      $scope.changed = function(val) {
          if(val && val.length > 2) {
           $scope.myModel = $scope.prevModel;
           alert("Upto 2 variables can be selected")
         } else {
           $scope.prevModel = val;
           
         }
      }
      
    });
    
    0 回复  |  直到 2 年前
        1
  •  1
  •   Kinglish    2 年前

    不确定这是否是您想要的,但您可以在发出警报之前用 Array.pop() 就在这里:

    $scope.changed = function(val) {
          if(val && val.length > 2) {
           val.pop();
    

    在上下文中:

    app.controller('DemoCtrl', function ($scope, $http, $timeout, $interval) {
      $scope.people = [
        { name: 'var1',      type: 'header' },
        { name: 'var2',  type: 'site' },
        { name: 'var3',  type:'header' },
        { name: 'var4',  type:'header' }
      ];
      $scope.changed = function(val) {
          if(val && val.length > 2) {
           val.pop(); // <- add this line
           $scope.myModel = $scope.prevModel;
           alert("Upto 2 variables can be selected")
         } else {
           $scope.prevModel = val;
           
         }
      }
      
    });