2014-09-25 52 views
0

越来越ID从JSON我有一个预输入,看起来像这样:遇到问题就自动完成

<input type="text" class='tk-proxima-nova degreeIn candidateProfile' placeholder="School/Institution" ng-model="university" typeahead="university.Service_Provider_Name for university in universitySuggest($viewValue)" /> 

返回JSON看起来与此类似:当我选择从选项

[{"Service_Provider_ID":133368,"Service_Provider_Name":"Duke University","Service_Provider_Desc":null,"NAICS_Id":1809},{"Service_Provider_ID":196282,"Service_Provider_Name":"Duke University Medical Center","Service_Provider_Desc":null,"NAICS_Id":1809},{"Service_Provider_ID":222220,"Service_Provider_Name":"Duke University Psychology Internship","Service_Provider_Desc":null,"NAICS_Id":1809},{"Service_Provider_ID":223427,"Service_Provider_Name":"Duke University Medical Center Psychology Internship","Service_Provider_Desc":null,"NAICS_Id":1809}] 

键入它将学校名称放在该字段中,但是有一种方法可以将该ID设置为另一个隐藏的输入,以便我可以使用我选择的数据发送该名称。 ID在这里很重要,但名字是需要查看的。

回答

0

是的,你可以这样做:

<input type="text" 
    ng-model="selected" 
    typeahead-on-select="changeSelect($item)" 
    typeahead="university as university.Service_Provider_Name for university in universities | filter:{Service_Provider_Name:$viewValue} " /> 

这里是Plunkr

我有点缩进你的代码更加清晰。

+0

唯一的问题是,它设置的值,当你点击作为ID,我想要的值显示学校的名称,但仍然持有ID的值 – ThinkNewDev 2014-09-25 17:10:17

+0

由于我使用'作为university.Service_Provider_Name', “大学”的价值将是* ID *,但您输入的文本将显示名称 – 2014-09-25 17:11:50

+0

当我尝试它输入文本显示ID – ThinkNewDev 2014-09-25 17:23:22

0

除了APERCU了以上关于预输入的格式=的意见“...”,你需要有一个预输入,输入格式像这样

typeahead-input-formatter="univChosen($model)" 

    $scope.univChosen = function(theId) { 
     var theItem = jQuery.grep($scope.universities,function(p) { 
           return p.Service_Provider_ID == theId}); 
    return theItem[0].Service_Provider_Name; 
    }; 

我假设这里$ scope.universities包含typeahead选项中所有项目的完整列表。我在这里使用了jQuery来查找匹配项,但是如果你愿意,你可以为(...)循环做一个。该函数返回将实际显示的字符串,在本例中为名称。