开发者社区> 问答> 正文

Angular异步改变model为什么没有更新到view上?

代码如下,为什么页面的文本在2秒之后没有变成 world


<body ng-app="myApp">
<div ng-controller="asyncCtrl">
<input type="text" ng-model="name">
<span>{{name}}</span>
</div>
<script src="../../bower_components/angular/angular.js"></script>
<script type="text/javascript">
var myApp = angular.module('myApp',[]);
myApp.controller('asyncCtrl',function($scope,$http){
    $scope.name = "hello";
    setTimeout(function(){
        $scope.name = "world";
    },200);
})
</script>
</body>

另,通过$http拿到的后台数据,如何赋值给model,然后自动更新视图?

展开
收起
蛮大人123 2016-03-11 16:21:35 2665 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    不要用 setTimeout$timeout

    var myApp = angular.module('myApp',[]);
    myApp.controller('asyncCtrl',
      function($scope,$http,$timeout){
        $scope.name = "hello";
        $timeout(function(){
            $scope.name = "world";
        },200);
    });

    举例来说,如果用 $http 做 GET 请求获取数据,获取数据后再用 success 回调方法来赋值,代码如下:

    $http.get({ url: '/api/foo' })
        .success(function(response) {
            $scope.name = response
        });
    2019-07-17 18:59:33
    赞同 展开评论 打赏
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Angular从零到一 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载