Javascript 如何使用Angular调用ajax并从返回中填充内容(在页面已经呈现之后)
我是一名后端API开发人员,刚接触AngularJS(version 1),这就是我当前任务的编写内容 该页面在标记中找到了Javascript 如何使用Angular调用ajax并从返回中填充内容(在页面已经呈现之后),javascript,angularjs,ajax,Javascript,Angularjs,Ajax,我是一名后端API开发人员,刚接触AngularJS(version 1),这就是我当前任务的编写内容 该页面在标记中找到了ng app=“app”,并且ng controller=“BaseController as baseCtrl”,呈现效果很好 从这里开始,有一块(当前为服务器端)内容需要由ajax、post-render调用,因为它的源代码不可靠,有时速度较慢。我已经编写了API URL来返回内容,例如 {“状态”:“OK”,“id”:“feed whatsnew”,“内容”:“不可靠
ng app=“app”
,并且ng controller=“BaseController as baseCtrl”
,呈现效果很好
从这里开始,有一块(当前为服务器端)内容需要由ajax、post-render调用,因为它的源代码不可靠,有时速度较慢。我已经编写了API URL来返回内容,例如
{“状态”:“OK”,“id”:“feed whatsnew”,“内容”:“不可靠的源!”}
我的问题是,如何使用Angular将上面的“内容”填充到的内容部分代码>位置,并取消隐藏输入新内容
到目前为止,角度渲染对我来说是有意义的,但像这样的任何辅助过程仍然是不透明的。我知道我在jQuery中会如何处理它,但我不想试图简单地“模仿”一个库而不是真正实现Angular框架。在Angular中,您可以使用$http
-提供程序使用ajax调用外部API。下面是一个你将如何做到这一点的例子
app.controller('BaseController',['$http', function($http){
var vm = this;
vm.content = {};
vm.fetchContent = function(){
return $http.get('/my-api-endpoint').then(function(response){
vm.content = response.data;
}, function(response){
console.error('Failed calling /my-api-endpoint ', response);
});
};
// Initiallly load content
vm.fetchContent();
}]);
对$http.get(…)
start的调用是对给定外部url的异步调用,并返回一个名为。异步调用完成后,此承诺将解析,它将使用then([callback])
执行传递给该承诺的回调。然后,此回调使用响应中传递的数据填充控制器中的vm.content
变量
您可以在中阅读有关$http
提供程序的更多信息
当您希望在某处呈现内容时,可以执行以下操作:
<span>{{baseCtrl.content}}</span>
{{baseCtrl.content}
尽管这一部分在很大程度上取决于您所呈现的内容
您可能应该将fetchContent()
函数分离为角度服务,但这是一个完全不同的主题 在angular中,您可以使用$http
-提供程序使用ajax调用外部API。下面是一个你将如何做到这一点的例子
app.controller('BaseController',['$http', function($http){
var vm = this;
vm.content = {};
vm.fetchContent = function(){
return $http.get('/my-api-endpoint').then(function(response){
vm.content = response.data;
}, function(response){
console.error('Failed calling /my-api-endpoint ', response);
});
};
// Initiallly load content
vm.fetchContent();
}]);
对$http.get(…)
start的调用是对给定外部url的异步调用,并返回一个名为。异步调用完成后,此承诺将解析,它将使用then([callback])
执行传递给该承诺的回调。然后,此回调使用响应中传递的数据填充控制器中的vm.content
变量
您可以在中阅读有关$http
提供程序的更多信息
当您希望在某处呈现内容时,可以执行以下操作:
<span>{{baseCtrl.content}}</span>
{{baseCtrl.content}
尽管这一部分在很大程度上取决于您所呈现的内容
您可能应该将fetchContent()
函数分离为角度服务,但这是一个完全不同的主题 AngularJS附带了强大的$http
库来执行ajax。请浏览网站上提供的相对简单的文档
以下是逻辑步骤
在控制器依赖项中注入$http
通过$http进行服务调用
成功后,将响应分配给$scope变量以使
它可用于UI/html标记。如果在标记中使用控制器作为
,则分配将有所不同
angular.module('app',[])
.controller('BaseController',函数($http){
var vm=这个;
vm.feed=null;
_getDataFromServer();
函数_getDataFromServer(){
var req={
网址:'https://jsonplaceholder.typicode.com/posts/1',
方法:“GET'//可以是post/put等
//数据:someJson——如果webservice需要
};
$http(请求)
.然后(功能(响应){
vm.feed=response.data;
}).catch(函数(err){
log('发生了一些错误!',err);
});
}
});代码>
使用$http
来自Ajax响应的标题:{{vm.feed.Title}
内容:
AngularJS附带了强大的$http
库来执行ajax。请浏览网站上提供的相对简单的文档
以下是逻辑步骤
在控制器依赖项中注入$http
通过$http进行服务调用
成功后,将响应分配给$scope变量以使
它可用于UI/html标记。如果在标记中使用控制器作为
,则分配将有所不同
angular.module('app',[])
.controller('BaseController',函数($http){
var vm=这个;
vm.feed=null;
_getDataFromServer();
函数_getDataFromServer(){
var req={
网址:'https://jsonplaceholder.typicode.com/posts/1',
方法:“GET'//可以是post/put等
//数据:someJson——如果webservice需要
};
$http(请求)
.然后(功能(响应){
vm.feed=response.data;
}).catch(函数(err){
log('发生了一些错误!',err);
});
}
});代码>
使用$http
来自Ajax响应的标题:{{vm.feed.Title}
内容:
您看过这个吗?你看过这个吗?我从另一个开发者那里得到反馈,这是最好的方法。谢谢只是想知道对vm
首字母缩略词的理解是什么。虚拟机?(只是一个猜测:)=似乎是一个编码约定。哈哈@OliverWilliams是引用视图模型的约定:)我从另一个开发人员那里得到反馈,这是最好的方式。谢谢只是想知道对vm
首字母缩略词的理解是什么。虚拟机?(只是猜测:)=似乎