我第一次尝试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>
答案 0 :(得分:2)
因为您在angularjs之外使用请求,所以在将数据设置为$ scope.xml之后需要调用$ apply()。看看apply方法:
http://docs.angularjs.org/api/ng.$rootScope.Scope
但最好使用angularjs提供的服务而不是使用jquery。