Angular新手:$ scope变量需要使用两次来刷新textarea

时间:2013-04-25 09:34:17

标签: angularjs

我第一次尝试AngularJS而且我遇到了问题。

在调试器中,我看到范围变量'$ scope.xml'已正确更新,但显示需要第二次传递(第二次点击)才能刷新。

这是一个可以看到我的问题的Plunker:http://plnkr.co/edit/9PJsGeDqwjC6nmZHcEJV

我正在查看文档,但我无法找到理解我做得不好的内容

非常感谢你的帮助!

<!doctype html>
<html ng-app="testAngularJS">
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.6/angular.min.js"></script>
</head>
<body>
<div ng-controller="testXML">
<div>XML<br/><textarea cols="60" rows="15" ng-model="xml" name="xml">{{xml}}</textarea></div>

<div><button ng-click="listTypDoc()">List !</button><br/>

<br/><button ng-click="clearXML()">Clear</button></div>
</div>

<script type="text/javascript">

var app = angular.module('testAngularJS', []);

 app.controller('testXML', function($scope){

  $scope.url = 'listeTypDoc.txt';

    $scope.listTypDoc = function() {

        $.ajax({
                type:"GET",
                url: $scope.url,
                xhrFields: {
                   withCredentials: false
                },
                crossDomain: false
            }).done(function ( data ) {
               $scope.xml = data;
               debugger;
          });

        };

        $scope.clearXML = function() {
        $scope.xml = ''; 
        };

    })  
</script>
</body>
</html>

1 个答案:

答案 0 :(得分:2)

因为您在angularjs之外使用请求,所以在将数据设置为$ scope.xml之后需要调用$ apply()。看看apply方法:

http://docs.angularjs.org/api/ng.$rootScope.Scope

但最好使用angularjs提供的服务而不是使用jquery。