gpt4 book ai didi

angularjs - 如何让 Controller 在 Angularjs 中刷新?

转载 作者:行者123 更新时间:2023-12-04 17:09:17 28 4
gpt4 key购买 nike

我正在为应用程序使用 Ionic 框架,并且坚持使用其中的一部分。在我的应用程序中,我有一个收藏夹 View ,它显示用户在应用程序其他地方收藏的项目列表。问题是, Controller 中的代码仅在第一次命中收藏夹路由时运行一次。如果用户随后在应用程序的其他位置添加了收藏夹,然后返回到收藏夹 View ,则不会重新生成列表。

在我的 Controller 中,我有以下内容:

Favourites.all().then(function(results){
angular.forEach(results, function(value, key){
// add results to an array to present in the view
})
})

我有一个执行数据库查询的工厂:
.factory('Favourites', function(DB){
var self=this;
console.log("test 1");

self.all = function() {
return DB.query('SELECT * FROM favourites')
.then(function(result){
return DB.fetchAll(result);
});
};
return self;
})

我的问题是,如何在用户向数据库添加新的收藏夹后刷新收藏夹 Controller ?我尝试向 Controller 添加作用域重载函数,并将 reload:true 添加到路由的 $stateProvider 中,但两者都没有任何区别。

最佳答案

从任何地方使用广播并在任何地方捕捉它:

在您的应用程序中的任何位置:

$scope.onNewFavoriteHandler = function() {
//Add to DB logic
$rootScope.$broadcast('new-favorite');
}

在相关 Controller 上:
$scope.$on('new-favorite', function(event, args) { 
Favourites.all().then(function(results){
angular.forEach(results, function(value, key){
// add results to an array to present in the view
})
});
// do what you want to do
})

Nice artice if you wish to extend your knoledge

关于angularjs - 如何让 Controller 在 Angularjs 中刷新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27483324/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com