【问题标题】:Globally accessible filter for angular app角度应用程序的全局可访问过滤器
【发布时间】:2013-06-04 15:35:03
【问题描述】:

在 AngularJS 应用程序中,我有一个带有任务列表的视图和一个带有过滤选项列表的侧边栏,用于过滤这些任务。两者都在不同的控制器中。

侧边栏

<div ng-controller="SidebarController">
    <a href="" ng-click="showOnlyCompleted()">Completed</a>
</div>

任务

<div ng-controller="TaskController">
    <tr ng-repeat="task in tasks | filter: search">
        <td>task.title</td>
        <td>task.status</td>
    </tr>
</div>

侧边栏控制器

$scope.search = [];

$scope.showOnlyCompleted = function()
{
    // set search filter
    $scope.search.status = 'completed'; 
};

任务控制器

$scope.tasks = [
    {   title: 'do something', status:'todo' },
    {   title: 'do something else', status:'completed' }
];

问题是,我怎样才能使过滤器search 可以通过 SidebarController 进行操作,但仍可用于过滤来自 TaskController 的任务?这是一个范围界定问题,因为两个控制器都需要能够访问它?

我认为该解决方案可能是可注入的,例如服务,但我真的不知道如何通过数据绑定使其适用于这种情况?

【问题讨论】:

    标签: angularjs filter


    【解决方案1】:

    我看到了一个很好的解决方案here。基本上只需创建一个具有某种状态的 filterService,将其注入您的控制器并直接在视图中绑定到它。

    【讨论】:

    • 感谢您的链接,帮助我让它工作:) 但我想知道是否有不同的方式,例如通过使用myApp.filter 定义过滤器,然后将该过滤器注入控制器?
    • myApp.filter这样定义为模块级别的过滤器在全局级别可用,并且可以在需要过滤器的HTML中直接使用
    猜你喜欢
    • 2018-03-01
    • 2011-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-06
    • 1970-01-01
    • 2010-09-05
    相关资源
    最近更新 更多