如何在Axios承诺响应中的$ scope中分配值?

时间:2019-05-24 10:14:01

标签: javascript angularjs promise axios

我有以下代码,其中我使用axios库从coinmarketcap REST API获取比特币的值后尝试打印比特币的值。尽管该值在控制台中写得很好,但文本框仍然为空。我在这里犯什么错误?

var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
  function get_btc_value(){
    // return this promise
    return axios.get('https://api.coinmarketcap.com/v1/ticker/bitcoin/')
.then((data)=>{
      console.log(data.data[0].price_usd)
      return data.data[0].price_usd
    })
  }

  get_btc_value().then(data => $scope.myVar = data)
});
<!DOCTYPE html>
<html>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<body>

<div ng-app="myApp" ng-controller="myCtrl">

<input ng-value="myVar">

</div>

</body>
</html>

1 个答案:

答案 0 :(得分:2)

get_btc_value的成功回调发生在Angular之外。因此,可以使用sorted([(x, y) for x in [1, 2, 3] for y in [1, 2, 3]], key=lambda y:max(y)) $scope.$apply()来触发手表。这样文本框将得到更新。


$scope.$digest()