$ http.get后视图未更新

时间:2018-04-05 17:14:10

标签: javascript angularjs

我知道有很多关于这方面的帖子,我已经尝试了他们的解决方案,但它仍然不起作用。

基本上我需要从我的数据库中获取国家列表,并在文档加载的html页面上显示它

以下是我的控制器

$scope.country_options = [];

function get_countries() {
  var url = "/dashboard-api/api/country/";
  var defer = $q.defer();

  $http.get(url)
    .then(function(response) {
      defer.resolve(response.data.result);
    });

  return defer.promise;
}

function init() {
  var promise = get_countries();
  promise.then(function(data) {
    $scope.country_options = data;
  })
  console.log($scope.country_options);
}

init();

在我的html页面上

<input class="form-check-input" type="checkbox" ng-repeat="item in country_options" value="item.country_code"
       ng-model="country[item.country_code]">
&nbsp;{{item.name}}

非常感谢您的帮助! 谢谢!

2 个答案:

答案 0 :(得分:1)

尝试使用:

$timeout( function(){ 
   $scope.country_options = data
}, 0);

输入值

value="{{item.country_code}}"

按以下方式绑定文本框:

<input type ="text" ng-bind="item.country_code" />
or
<input type="text" ng-value="item.country_code" />
or
<input type="text" value="{{item.country_code}}" />
or
<input type="text" ng-model="item.country_code" />

答案 1 :(得分:0)

你需要使用$ scope。$ apply()函数,所以用下面的代码替换$ scope.country_options =数据行

&#13;
&#13;
$scope.$apply(function() {
  $scope.country_options = data
});
&#13;
&#13;
&#13;