加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

如何让Angularjs中的控制器刷新?

发布时间:2020-12-17 06:53:05 所属栏目:安全 来源:网络整理
导读:我正在为一个应用程序使用Ionic Framework,并坚持一个部分.在我的应用程序中,我有一个收藏夹视图,其中显示了用户在应用程序中其他地方喜欢的项目列表.问题是,控制器中的代码仅在第一次点击收藏夹路由时运行.如果用户然后在应用程序中的其他位置添加收藏夹,然
我正在为一个应用程序使用Ionic Framework,并坚持一个部分.在我的应用程序中,我有一个收藏夹视图,其中显示了用户在应用程序中其他地方喜欢的项目列表.问题是,控制器中的代码仅在第一次点击收藏夹路由时运行.如果用户然后在应用程序中的其他位置添加收藏夹,然后返回“收藏夹”视图,则不会重新生成列表.

在我的控制器中,我有以下内容:

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;
})

我的问题是,在用户将新收藏夹添加到数据库后,如何让收藏夹控制器刷新?我尝试将范围重新加载函数添加到控制器,并且还将reload:true添加到路由的$stateProvider,但两者都没有任何区别.

解决方法

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

应用中的任何位置:

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

在相关的控制器上:

$scope.$on('new-favorite',function(event,args) { 
    Favourites.all().then(function(results){
        angular.forEach(results,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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读