【发布时间】:2018-11-15 02:34:20
【问题描述】:
我目前正在从端点获取一些数据,然后更新一个名为$scope.response 的变量。我不太确定如何更新此变量并将其呈现在屏幕上。
那么下面的代码会发生什么:
我从 iframe 的 src 属性中获取查询字符串,然后将其发布到我的端点,在那里我得到一个名为 data 的特定响应。我想用这个对象更新$scope.response,然后使用{{response}} 在视图上渲染它。
有人可以告诉我如何做到这一点吗?
app.controller('MainCtrl', function($scope) {
$scope.response;
API = {};
API.endpoint = 'https://some/endpoint/';
function getParameterByName(name, url) {
if (!url) url = window.location.href;
name = name.replace(/[\[\]]/g, "\\$&");
var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
results = regex.exec(url);
if (!results) return null;
if (!results[2]) return '';
return decodeURIComponent(results[2].replace(/\+/g, " "));
}
function doAjax(callback) {
var q = getParameterByName('QUERY');
jQuery.ajax({
url: API.endpoint + "script.php",
method: "POST",
data: { q: q },
dataType: "json",
success: function (data) {
callback(data);
$scope.response = data;
}
});
}
});
【问题讨论】:
-
不要使用 jQuery ajax。使用 angular $http 这样您就不必告诉 angular 来更新视图。注意设置与发送表单编码数据有点不同,默认是 $.ajax 而 $http 默认是发送 json
-
要使用 jQuery ajax,您需要在范围更改后调用
$scope.apply()。通常在 Angular 应用程序中不需要 jQuery
标签: javascript angularjs asynchronous