Javascript 将Angular typeahead对象结果传递给控制器中的另一个函数
在这个场景中,我使用ui引导程序typeahead从外部api捕获对象。使用select回调,我将获得该对象,并在控制器内的单独函数中设置结果 问题是,我想将这些结果发送到一个单独的api,并使用我已经设置的单击函数。我的问题是如何将输入的结果输入到单击功能中以发布?用户流程如下所示Javascript 将Angular typeahead对象结果传递给控制器中的另一个函数,javascript,angularjs,angular-ui-typeahead,Javascript,Angularjs,Angular Ui Typeahead,在这个场景中,我使用ui引导程序typeahead从外部api捕获对象。使用select回调,我将获得该对象,并在控制器内的单独函数中设置结果 问题是,我想将这些结果发送到一个单独的api,并使用我已经设置的单击函数。我的问题是如何将输入的结果输入到单击功能中以发布?用户流程如下所示 <div> <input type="text" placeholder="Find A Game" typeahead-on-select="setGames($
<div>
<input type="text" placeholder="Find A Game"
typeahead-on-select="setGames($item)"
ng-model="asyncSelected"
typeahead="test.name for test in getGames($viewValue)"
typeahead-loading="loadingLocations" typeahead-min-length="3"
typeahead-wait-ms="500" typeahead-select-on-blur="true"
typeahead-no-results="noResults">
</div>
<div ng-show="noResults">
No Results Found
</div>
<button ng-disabled="!asyncSelected.length"
ng-click="addtodb(asyncSelected)">Add To Database</button>
无论我做什么,我似乎都无法将整个$item对象传递到这个单击函数中,以发布我需要的所有信息。通过新开发人员在评论中: $item仅在选择时在本地可用于typeahead。。。你可以 或者将其分配给控制器中的某个模型,或者实际上, 将typeahead的模型设为项目:typeahead=“测试为 getGames($viewValue)”中测试的test.name–新开发
通过评论中的新开发人员: $item仅在选择时在本地可用于typeahead。。。你可以 或者将其分配给控制器中的某个模型,或者实际上, 将typeahead的模型设为项目:typeahead=“测试为 getGames($viewValue)”中测试的test.name–新开发
您没有将
$item
传递到addtodb
-因此newsite
参数是未定义的
。你没有在setGames
中获得$item
吗?我也尝试过将$item传递给addtodb,但它不起作用。我正在从setGames函数中获取$item,但我不确定如何将其传递到我的addtodb函数中。好的,$item
仅在本地为选择时的提前键入可用。。。您可以将其分配给控制器中的某个模型,或者实际上,将typeahead
的模型作为项目:typeahead=“test as test.name for test in getGames($viewValue)”
不确定如何将其分配给另一个模型。对于第二个建议,这可以很好地工作,但问题是,然后下拉菜单并选择只显示[object][object]作为结果,这使得它相当不可用。方法一确实起到了作用。我搞乱了顺序,把它分配给了名字,而不是对象。谢谢新开发人员!您没有将$item
传递到addtodb
-因此newsite
参数是未定义的
。你没有在setGames
中获得$item
吗?我也尝试过将$item传递给addtodb,但它不起作用。我正在从setGames函数中获取$item,但我不确定如何将其传递到我的addtodb函数中。好的,$item
仅在本地为选择时的提前键入可用。。。您可以将其分配给控制器中的某个模型,或者实际上,将typeahead
的模型作为项目:typeahead=“test as test.name for test in getGames($viewValue)”
不确定如何将其分配给另一个模型。对于第二个建议,这可以很好地工作,但问题是,然后下拉菜单并选择只显示[object][object]作为结果,这使得它相当不可用。方法一确实起到了作用。我搞乱了顺序,把它分配给了名字,而不是对象。谢谢新开发人员!
angular.module('2o2pNgApp')
.controller('GiantCtrl', function ($scope, $http, TermFactory, $window, SaveFactory) {
$scope.getGames = function(val) {
return $http.jsonp('http://www.example.com/api/search/?resources=game&api_key=s&format=jsonp&limit=5&json_callback=JSON_CALLBACK', {
params: {
query: val
}
}).then(function(response){
return response.data.results.map(function(item){
return item;
});
});
};
$scope.setGames = function (site) {
var newsite = site;
};
$scope.addtodb = function (asyncSelected, newsite) {
TermFactory.get({name: asyncSelected}, function(data){
var results = data.list;
if (results === undefined || results.length === 0) {
SaveFactory.save({vocabulary:'5', name:newsite.name, field_game_id:newsite.id}, function(data) {
$window.alert('All Set, we saved '+asyncSelected+' into our database for you!')
});
} else {
// do stuff
});
}
});