在AJAX API调用后如何更新Angular控制器
How can I update an Angular controller after an AJAX API call?
我正在创建一个天气预报应用程序,使用ng repeat迭代我的forecast.dayArray来在页面中创建不同的日期。
问题是,用于在每个"一天"中填充数据的控制器没有使用从ajax API调用解析的信息进行更新。相反,它只保留初始化时使用的值。
//Initialize
var app = angular.module("weather", []);
app.controller("ForecastController", function(){
this.array = ['a','b','c'];
});
ajaxCall(){
success: function(){
app.controller.array.push('d'); //Doesn't seem to work
};
您可以在这里看到完整的代码:My Codepen
在您的示例中,app.controller
是一个用于设置新控制器的函数,因此在这一行中:
app.controller.array.push('d');
app.controller
不是对您的"ForecastController"
的引用。
解决这个问题的一个简单方法是在控制器内进行AJAX调用,$http
服务:
app.controller("ForecastController", ["http", function ($http) {
this.array = ['a', 'b', 'c'];
$http
.get(...)
.then(function (response) {
this.array.push('d');
});
}]);
虽然这是可行的,但通常认为更好的做法是将数据提取分离到自己的服务中,并将新服务注入控制器。
您将不得不使用$http
服务。您可以在控制器级别注入它,也可以用工厂/服务抽象它。
var app = angular.module("weather", []);
app.controller("ForecastController", ['$http', function($http) {
this.array = ['a', 'b', 'c'];
$http.get('someURLhere').then(function(response) {
//http call success!
this.array.push('d');
}, function(error) {
//error here! handle the error
alert(error.data)
})
}]);
您可以在此处阅读有关如何使用$http
服务的信息。
不需要使用$http服务,您仍然可以使用$scope从角度外更新作用域$应用
相关文章:
- 在日期更改后更新Angular UI引导程序日期选择器选项
- 如何使用不同视图的JSON对象更新angular js中的全局JSON字段
- 从$http.get调用更新Angular作用域变量
- 更新angular ng模型中的HTML输入值更改
- 从返回的 MongoDB 对象更新 Angular.js $scoped
- 更新 Angular $interval 中的变量会导致其他函数运行
- 多视图未更新Angular JS中的变量
- 点击按钮加载新的json url并更新Angular中的View
- 正在更新Angular中的多个$scope属性
- 可以't更新angular.js中的变量
- 服务变量未更新Angular JS中的指令
- 更新Angular Directive的值时出现问题's模型,同时从表单的监视进行更新
- 成功后使用dropzone更新angular js上的选项卡
- 如何更新Angular UI网格中的数据
- 美元的范围.currentPage没有更新——Angular Ui分页
- 从chrome dev. tools更新angular .js工厂
- 从javascript中更新angular表单
- 更新angular-flexslider的Json数据'removeSlide'
- 更新angular中的作用域值
- Angularjs没有更新angular模板给出的标签