代码之家  ›  专栏  ›  技术社区  ›  its me

如何根据选择自动完成输入?

  •  -1
  • its me  · 技术社区  · 6 年前

    我想根据所选内容自动完成输入。例如,如果我选择 laptop 我想在输入中填充“5677”。另外,如果我按 Submit 我想看看选择的原始数据:

    {
        "Type": "laptop",
        "value": "5677"
    }
    

    但是,我得到一个这样的嵌套对象:

    {
      "Type": {
        "Type": "laptop",
        "value": "5677"
      }
    }
    

    这是 fiddle . 以下是我的资料:

    angular
      .module('MdAutocompleteBugApp', ['ngMaterial'])
      .controller('MdAutocompleteBugController', function ($scope, $q, $timeout) {
    
        $scope.data = {};
        $scope.save = function () {
          console.log($scope.data);
          console.log("dd");
        }
    
        $scope.datas = [
          {"Type": "Mobile","value": "2400"}, 
          {"Type": "laptop","value": "5677"}, 
          {"Type": "Mobile","value": ""},
          {"Type": "tv",}
        ];
    
        var elementId = [];
    
        $scope.newArr = $scope.datas.filter(el => {
          if (elementId.indexOf(el.Type) === -1) {
            elementId.push(el.Type);
            return true;
          }
        });
        $scope.getMatches = function (searchText) {
          var configs = $scope.newArr.filter(function (config) {
            return (config.Type.toUpperCase().indexOf(searchText.toUpperCase()) !== -1);
          });
          return configs;
        }
      });
    <div ng-app="MdAutocompleteBugApp">
      <div ng-controller="MdAutocompleteBugController as vm">
        <form name = "test" ng-submit="save()">
          <md-toolbar class="md-padding">
    
            <md-autocomplete 
              md-selected-item="data.Type" 
              md-search-text="searchText" 
              md-items="item in getMatches(searchText)" 
              md-item-text="item.Type" 
              placeholder="Search states" 
              md-no-cache="true">
              <md-item-template>
                <span>{{item.Type}} </span>
              </md-item-template> 
            </md-autocomplete>
    
          </md-toolbar><br>
    
          Value <input type="text" ng-model="data.value"><br><br><br>
          <button type="submit">submit</button>
    
        </form>
      </div>
    </div>
    1 回复  |  直到 6 年前
        1
  •  0
  •   its me    6 年前

    我们需要添加“md selected item change=”selecteditemchange(item)“”,在那里我们可以将数据传递到输入字段,我们可以得到我们想要的输出。

    $scope.selectedItemChange = function(item)
    {
    if(item){
    $scope.data.Type = item.Type;
    $scope.data.Value = item.Value;
    }
    
    }