我在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
发生变化时,是否可以重新运行反应式助手?
答案 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作为助手但没有链接到任何东西?因此,如果您将其放在模板助手中,它将在范围更改时运行,但作为独立的帮助程序(现在看起来如此),它将不会在数据上下文更改时自动重新运行。