【问题标题】:AngularJS - httpget multiple times for same formAngularJS - httpget 多次获取相同的表单
【发布时间】:2016-01-26 01:40:14
【问题描述】:

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

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

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

但是我想在 Milk 和 Chips 之后填写什么。 所以我希望它显示在 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=

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

我希望这是足够的信息。 *** 不知道为什么样式会出错。抱歉页面混乱。堆栈溢出很好地预览了这篇文章,但是当我发布它时出现了问题。很多代码没有变灰

【问题讨论】:

  • 根本不清楚您发布的代码与您提供的示例有何关系。
  • 你的问题有可能吗?因为答案是那时。 是的,是的
  • 我进行了编辑。现在有更多关于代码的信息

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


【解决方案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=')
                }
        }
})

market 是数组。

并解析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);
});
  }
})

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    • 我用更多代码信息更新了我的问题。 $scope.alarmingMarket = $scope.hard 基本上是用户填写的内容
    • 您如何保存多个项目? $scope.hard 看起来只是一个字符串。如果是这种情况,您的代码将仅适用于用户输入的最后一项。
    • 是的,它是一个字符串。我不能只创建一个数组,因为我不能在那个返回 $httpget 的数组中插入一个数组,因为在那个 url 中,我只能请求那个 url 中的 1 项。
    • 在这种情况下,在您的 $scope.refresh() 中循环遍历项目列表。但是,如果您的列表太长,这将导致问题。
    • 现在您可以更改您的调用以获取用户输入的内容,然后使用返回的对象并在 ng-repeat 中显示您想要的内容。
    猜你喜欢
    • 2018-05-29
    • 1970-01-01
    • 1970-01-01
    • 2020-02-05
    • 1970-01-01
    • 2017-12-28
    • 1970-01-01
    • 2018-05-21
    • 2020-07-30
    相关资源
    最近更新 更多