Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将Angular typeahead对象结果传递给控制器中的另一个函数_Javascript_Angularjs_Angular Ui Typeahead - Fatal编程技术网

Javascript 将Angular typeahead对象结果传递给控制器中的另一个函数

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($

在这个场景中,我使用ui引导程序typeahead从外部api捕获对象。使用select回调,我将获得该对象,并在控制器内的单独函数中设置结果

问题是,我想将这些结果发送到一个单独的api,并使用我已经设置的单击函数。我的问题是如何将输入的结果输入到单击功能中以发布?用户流程如下所示

<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
            });
      }

  });