首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用md-autocomplete在我的servlet上获得ID值而不是displayValue?

如何使用md-autocomplete在我的servlet上获得ID值而不是displayValue?
EN

Stack Overflow用户
提问于 2018-07-13 01:46:25
回答 1查看 46关注 0票数 1

我已经学习angularjs两个星期了。从技术上讲,我陷入了一个简单的问题,但我找不到答案。我试图在我的项目中使用md-autocomplete,但是我被卡住了,因为我想在我的servlet中获取id值而不是display值。

这就是我的md-autocomplete:

<div ng-controller="DemoCtrl as ctrl" layout="column" ng-cloak>
<md-content class="md-padding">
    <md-autocomplete flex="true" 
                     required="true"
                     md-input-name="autocompleteField" 
                     md-input-minlength="2" 
                     md-input-maxlength="18" 
                     md-no-cache="ctrl.noCache" 
                     md-selected-item="ctrl.selectedItem" 
                     md-search-text="ctrl.searchText" 
                     md-items="item in ctrl.querySearch(ctrl.searchText)" 
                     md-item-text="item.display"
                     md-require-match="true" 
                     md-floating-label="Favorite state">
        <md-item-template>
            <span md-highlight-text="ctrl.searchText" md-highlight-flags="^i">{{item.display}}</span>
        </md-item-template>
        <div ng-messages="formSave.autocompleteField.$error" ng-if="formSave.autocompleteField.$touched || formSave.$submitted">
            <div ng-message="required">You <b>must</b> have a favorite state.</div>
            <div ng-message="md-require-match">Please select an existing state.</div>
            <div ng-message="minlength">Your entry is not long enough.</div>
            <div ng-message="maxlength">Your entry is too long.</div>
        </div>
    </md-autocomplete>
</md-content>

JS:

(function () {
'use strict';
angular
        .module('autocompleteFloatingLabelDemo', ['ngMaterial', 'ngMessages'])
        .controller('DemoCtrl', DemoCtrl);
function DemoCtrl($http, $timeout, $q) {
    var self = this;
    self.states = null;
    self.selectedItem = null;
    self.searchText = null;
    self.querySearch = querySearch;

    function querySearch(query) {
        var deferred = $q.defer();
        $http.defaults.headers.post["Content-Type"] = "application/x-www-form-urlencoded; charset=utf-8";
        var all;
        $http({
            method: 'GET',
            url: '/employee',
            params: {
                employeeListByName: true,
                active:'active',
                name: query,
                async: false
            }
        }).then(function (response) {
            all = response.data;
            $timeout(function () {
                deferred.resolve(all);
            }, Math.random() * 1000, false);
            deferred.promise;
        }, function () {
            alert('Error');
        });
        return deferred.promise;

    }
}})();

我的自动完成列表

[{"id" : "90", "display" : "Emplooy 1"},{"id" : "66", "display" : "Emplooy 2"}, {"id" : "179", "display" : "Emplooy 3"}, {"id" : "48", "display" : "Emplooy 4"}]

Servlet:

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response){
        String id = request.getParameter("autocompleteField");//the result its the display value, I want to get the id value;
}

有谁知道吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-13 01:58:17

在控制器(selectedItem)的作用域中已经有选定的项。所以你所要做的就是,当你提交表单的时候,你可以通过

selectedItem.id

因此,您可能会在表单的末尾添加一个按钮

<button ng-click="submit()">Click me</button>

然后在你的控制器中

function submit(){
   var id = selectedItem.id;
   //make http call
}

md-autoselect的文档是:https://material.angularjs.org/latest/api/directive/mdAutocomplete ng-click的文档是:https://docs.angularjs.org/api/ng/directive/ngClick

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51311676

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档