Javascript AngularJS-特定深度属性上的过滤器
我有一个javascript对象,希望在特定的deep属性上使用angular的过滤器,但它似乎不起作用Javascript AngularJS-特定深度属性上的过滤器,javascript,angularjs,Javascript,Angularjs,我有一个javascript对象,希望在特定的deep属性上使用angular的过滤器,但它似乎不起作用 function MyCtrl($scope, $filter) { $scope.items = [ {id:{val:1,str:'abc'}, name:'John'}, {id:{val:2,str:'abcd'}, name:'John'}, {id:{val:3,str:'xyz'}, name:'John'}, {id:{val:4,str:'
function MyCtrl($scope, $filter)
{
$scope.items = [
{id:{val:1,str:'abc'}, name:'John'},
{id:{val:2,str:'abcd'}, name:'John'},
{id:{val:3,str:'xyz'}, name:'John'},
{id:{val:4,str:'axcvb'}, name:'John'},
{id:{val:5,str:'qwe'}, name:'John'}];
$scope.items2 = $scope.items;
$scope.$watch('search', function(param)
{
$scope.items = $filter('filter')($scope.items2, {id:{val:param}},false);
});
};
这是小提琴
如果我只是说
$scope.items = $filter('filter')($scope.items2, {id:param},false);
然后,它工作,但它搜索整个对象,这不是我想要的,我希望它可以用于部分搜索,因此我将精确匹配标志设置为false,从控制器中删除
$watch
,并对ng repeat执行筛选
<tr ng-repeat="item in items | filter:{id.val:search}">
<td>{{item.id}}</td>
<td>{{item.name}}</td>
</tr>
{{item.id}
{{item.name}
是否有任何原因不想在ng repeat
上执行筛选?使用$watch
对搜索模式进行加密似乎是一种过度使用没有特别的原因,我实际上想知道如何在控制器的深层属性上使用过滤器。这只是我在某处找到并修改的示例代码。我只是想知道在对象表示法中给出第二个参数,{id:{val:param}}
是否正确,或者是否有其他方法使用内置过滤器。我将发布一些可能有帮助的东西,它工作得很好,但对于我的实际项目,我需要在控制器中使用它,我如何实现这一点。仅仅说{id.val:search}
或{id:{val:search}}
是不起作用的。你能用字符串代替search watch函数吗?