如何在控制器外部使用角度的ng-repeat滤波器?

时间:2014-03-09 18:22:15

标签: angularjs

我想像这样使用angular的ng-repeat过滤器:

 <div ng-repeat="trade in trades | filter:searchTrades | orderBy:predicate:reverse">

这里的问题是输入控件,我想将“searchTrades”绑定到控制器外的存在并查看ng-repeate存在的位置。输入字段存在于控制器外部,这是有充分理由的。这是一个全局搜索输入,我打算使用与每个控制器不同。所以我需要根据哪个控制器/视图处于活动状态,为搜索输入提供不同的行为。

1 个答案:

答案 0 :(得分:1)

这是范围问题,也是范围之间的事件。由于angular使用原型继承,您仍然可以访问“父”范围属性并对它们做出反应。

如果在父控制器上有searchTrades,子控制器就可以访问它。 注意如果子控制器修改searchTrades它将生成“新副本”,如果您需要使用$scope.$emit$scope.$on

<强> Here is a plunker to look at

考虑以下

<强>控制器

function MainCtrl($scope, ...) {
    $scope.search = 'My search term' 
}

function ChildCtrl1($scope, ...) {
    $scope.items = ['Foo', ... ]
}

查看

<body ng-controller="MainCtrl">
    <label>Search</label> <input ng-model="search" />

    <div ng-controller="ChildCtrl1">
        <ul>
            <li ng-repeat="item in items | filter:search">{{item}}</li>
        </ul>
    </div>
</body>

ChildCtrl1将从父控制器继承search,它可以用作“普通”