$ scope更改时重新运行反应式助手

时间:2016-02-12 01:43:55

标签: javascript angularjs meteor reactive-programming angular-meteor

我在Angular-Meteor中有一个反应数据源,并希望找到一种方法,在我更改另一个$ scope值后重新运行反应函数。在这里,我想基于$ scope.model.sort更改排序顺序:

angular.module('...').controller('MyCtrl', [...], function(...){

    //Subscribe
    $scope.subscribe('articles');

    //Init
    $scope.model = {
        sort: 1,
        ...
    }

    //Reactive definitions
    $scope.helpers({
        articles: () => {
            console.log("+ articles");
            return Articles.find({...}, {sort: {colToSort: $scope.model.sort} });
        }
    });

然后我改变了html中的排序顺序或者调用了一个函数:

ng-click="model.sort=-1"
ng-click="setSort(-1)"

JS

    $scope.setSort = function(sort) {
        console.log("+ setResourcesSort(%s)", sort);
        $scope.model.sort = sort;
    }

这两种方式似乎都没有重新运行反应助手。当引用的$scope.model.sort发生变化时,是否可以重新运行反应式助手?

2 个答案:

答案 0 :(得分:3)

您可能需要添加getReactively



  $scope.model = {
        sort: 1,
        ...
    }

    //Reactive definitions
    $scope.helpers({
        articles: () => {
            console.log("+ articles");
            return Articles.find({...}, {sort: {colToSort: $scope.getReactively('model.sort')} });
        }
    });




阅读api document了解更多详情

答案 1 :(得分:0)

帮助者需要处于被动区域,现在似乎并非如此。你有$ scope作为助手但没有链接到任何东西?因此,如果您将其放在模板助手中,它将在范围更改时运行,但作为独立的帮助程序(现在看起来如此),它将不会在数据上下文更改时自动重新运行。