AngularJS - 为同一表单多次httpget

时间:2015-10-26 19:58:18

标签: javascript angularjs angularjs-scope angularjs-ng-repeat angularjs-service

我正在申请。我有一个用户可以输入产品的表单。我用angularjs服务得到了价格。我将它注入.RateInfoService。

因此,如果我输入“Milk”,它会在DOM {{rate}}中说明 - > $ 2

但如果我填写筹码,它会改为{{rate}} - > $ 1.50

但是我想要填充牛奶和那些芯片之后。 所以我希望它在html页面中显示

牛奶 - > 2美元& Chips-> $ 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

我发现可以在网址中转储多个对象。

    HTTPS://query.private%20in%20( “牛奶”, “芯片”)及格式= JSON&安培;诊断=真安培; ENV =商店%3A%2F%2Fdatatables.org%2Falltableswithkeys&安培;回调=

我怎样才能以棱角分明的最佳方式做到这一点?我是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"

我希望这是足够的信息。 ***不确定样式出错的原因。对不起凌乱的页面。堆栈溢出可以很好地预览这篇文章,但是当我发布它时会出现问题。很多代码都不是灰色的

2 个答案:

答案 0 :(得分:1)

我的解决方案

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

答案 1 :(得分:0)

抱歉没有足够的回复发表评论。请给我一个加号,如果这有帮助,所以我可以得到更多的代表。

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

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