我是一个有角度的新手,如果问题标题不是很有帮助,请原谅我。
我有一个带有ng-repeat的div我想要执行过滤器,但过滤后的元素存在于单独的视图中,并使用过滤器按钮中的单独控制器。
在目标网页上,我有一个执行此操作的按钮:
<div class="evaweb-nav" ng-controller="mainCtrl">
<div class="view-indicator" ng-click="actionFilter = { userFavorite : 'true' };">
</div>
我想要过滤的元素存在于一个单独的视图中。使用routeProvider的libraryCtrl
<div class="video-item" ng-repeat="chirp in chirps | filter: actionFilter | filter: categoryFilter | filter: searchFilter"></div>
如果我将actionFilter
替换为{ userFavorite : 'true' }
,它可以正常工作,但否则无效。
我也尝试将其放入工厂内,并将其注入libraryCtrl
(见下文)
demoApp.factory('filterFactory', function() {
var actionFilter = { userFavorite : 'true' };
var factory = {};
factory.getFilter = function() {
return actionFilter;
}
return factory;
});
libraryCtrl
能够阅读actionFilter
,但它没有将其应用于视图中的过滤器。我几乎没有动作,我应该以不同的方式构建它吗?我做错了什么?
加成
actionFilter
在factory和mainCtrl中定义;
ng-repeat
出现在libraryCtrl中。
工厂注入了libraryCtrl和mainCtrl,(我希望这会允许libraryCtrl访问mainCtrl的范围)