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

标签 angularjs ionic-framework

我正在为应用程序使用 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/

相关文章:

javascript - 从浏览器中禁用 iOS 双击空格键

javascript - 在 Angular ui-router 中嵌套状态 url 发生变化,但模板未加载

android - 无法进行安卓构建

angular - Ionic4/Angular在Twitter上发布一条推文

ionic-framework - 找不到名称 'RouteComponentProps' 。 TS2304

angular - 当数据集更改时, ionic 虚拟滚动列表元素总是闪烁

javascript - 按钮中的 AngularJS angular-datatables 自定义属性

Javascript自调用函数在 Angular ionic 中不起作用

javascript - 使用来自多个文本框的输入形成一系列地址列表

ios - xcodebuild DVT 断言失败,出现 "Unexpectedly found two active proxied devices"