AngularJS - 对同一表单多次 httpget

AngularJS - httpget multiple times for same form

我正在申请。我有一个表格,用户可以在其中输入产品。我通过 angularjs 服务获得价格。我注入了.RateInfoService.

因此,如果我输入 "Milk",它会在 DOM {{rate}} -> $2

中显示

但是如果我填写筹码,它会改变路线到 {{rate}} -> $1.50

但我想在牛奶和薯条之后填充什么。 所以我希望它显示在 html 页面

牛奶->2 美元和薯条->1.50 美元。

所以它会显示这两个项目,用户可以继续输入产品并提交。 (ng-点击)。我也许可以在数组中做到这一点,但请注意我有一个 刷新率 。不确定这是否可以用 ng-repeat 来做,或者即使那是可能的。

.controller("MainCtrl", function($scope, $http, $timeout, $ionicPlatform, $cordovaLocalNotification, $ionicPopup, RateInfoService, AlarmService, MonitorService) {
      $scope.refreshRate = 5000;

      $scope.refreshData = function() { 
        RateInfoService.getMarket($scope.alarmingMarket).success(function(data) {
          $scope.rate = data.query.results.rate.Rate;
          $scope.updateTime = data.query.results.rate.Time;
        })
  }



<label class="item item-input">
 <span class="input-label">Product name</span>
 <input type="text" min="3" ng-model="hard" name="text" autofocus required>
</label>

还有一些额外的信息

  $scope.submit = function() { 
  $scope.alarmingMarket = $scope.hard
  console.log($scope.monitors);
};

$scope.alarmingMarket = $scope.hard

我用这个是因为只有在用户填写并按下提交后它才会得到市场价格。

获取价格的RateInfoService:http://pastebin.com/gHfhzMjR

我刚刚发现可以在 url 中转储多个对象。

https://query.private%20in%20("Milk","Chips")&format=json&diagnostics=true&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback =

如何在 angular 中以最佳方式做到这一点?我是 angularjs 的新手(3 周)

这是 Json 格式的视图(解释 $scope.rate = data.query.results.rate.Rate;)

  "results": {
   "rate": [
    {
     "id": "MILK",
     "Name": "MILK",
     "Rate": "1.1054",
     "Date": "10/26/2015",
     "Time": "9:37pm",
     "Ask": "1.1056",
     "Bid": "1.1052"
    },
    {
     "id": "CHIPS",
     "Name": "CHIPS",
     "Rate": "1.5349",
     "Date": "10/26/2015",
     "Time": "9:37pm",
     "Ask": "1.5352",
     "Bid": "1.5346"

我希望这些信息足够了。 *** 不确定为什么样式会出错。抱歉页面混乱。 Stack overflow 很好地预览了这个 post,但是当我发布它时出了点问题。很多代码没有变灰

抱歉,没有足够的代表post发表评论。如果这有帮助,请给我加分,这样我可以获得更多代表。

根据您 post 编辑的内容,您似乎在尝试重复用户选择的项目,然后获取每个项目的每个新费率(不确定 $scope.alarmingMarket 是否是一个数组项或不)。

如果您想获取用户选择的项目的所有最新费率,您必须向上传递整个项目数组并返回一个数组,然后让 ng-repeat 通过将值分配给来完成工作$scope.alarmingMarket(如果那是您的项目列表)。

我的解决方案

    $scope.alarmingMarket = [];
  $scope.submit = function() { 

     // $scope.alarmingMarket = $scope.hard
     $scope.alarmingMarket.push($scope.hard);
      console.log($scope.alarmingMarket);
    };

这将推送 $scope.alarmingMarket 数组中的所有内容。

获取费率的服务

    module.service('RateInfoService', function($http) {
        return {
                getMarket: function(alarmingMarket) {
                    var market = alarmingMarket
                        return $http.get('https://query.private%20in%20(%22'+ market  + '%22)&format=json&diagnostics=true&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback=')
                }
        }
})

市场是数组。

并解析 Json

 $scope.refreshData = function() { 
RateInfoService.getMarket($scope.alarmingMarket).success(function(data) {
  if($scope.alarmingMarket.length <= 1){ //if alarmingMarket[] has only 1 market
    $scope.rate = [];
    $scope.rate.marketid = data.query.results.rate.id;
    $scope.rate.rate = data.query.results.rate.Rate;
    $scope.rate.updateTime = data.query.results.rate.Time;
    console.log($scope.rate);
  }else{
  angular.forEach(data.query.results.rate, function (value, key) {
    $scope.rate = [];
    $scope.rate.marketid = data.query.results.rate[key].id;
    $scope.rate.rate = data.query.results.rate[key].Rate;
    $scope.rate.updateTime = data.query.results.rate[key].Time;
    console.log($scope.rate);
});
  }
})