Jquery 单击按钮替换$scope.items

Jquery 单击按钮替换$scope.items,jquery,angularjs,Jquery,Angularjs,我在我的作用域中有一个数组中的项目列表。在我的视图中,它以ng repeat重复出现。现在,基于一个点击事件,我想过滤数组以显示所有或仅显示我的项目。最好的方法是什么 下面是我想用来在这两个阵列之间切换的按钮: <div class="btn-group btn-group-custom1"> <label class="btn btn-sm" ng-click="pL.myitems()" uib-btn-radio="'Middle'">Just mine<

我在我的作用域中有一个数组中的项目列表。在我的视图中,它以ng repeat重复出现。现在,基于一个点击事件,我想过滤数组以显示所有或仅显示我的项目。最好的方法是什么

下面是我想用来在这两个阵列之间切换的按钮:

<div class="btn-group btn-group-custom1">
  <label class="btn btn-sm" ng-click="pL.myitems()" uib-btn-radio="'Middle'">Just mine</label>
  <label class="btn btn-sm" ng-click="pL.allitems()" uib-btn-radio="'Right'">All itmes</label>
</div>
你想要的是一个。使用过滤器,您可以定义一个函数,当传递数组时,该函数将根据需要返回数组,而不必丢失原始数组(并且易于在视图中使用和重用)

例如:

angular.module('yourModule')
.filter('arbitraryFilter', [function () {
        return function (inputArray, filterArray) {
            if(!filterArray) return inputArray; //This will return the unfiltered array.
            var resultArray = [];
            for(var i=0;i<inputArray.length;i++)
                if(inputArray[i].someProperty === 'property to include')
                    resultArray.push(inputArray[i]);
            return resultArray;
        };
    }])
.controller('yourController',['$scope', function($scope){
    $scope.filterArray = false;
    $scope.toggleFilterArray = function(){ $scope.filterArray = !$scope.filterArray;};
}])
angular.module('yourModule'))
.filter('任意过滤器',[函数(){
返回函数(inputArray、filterArray){
如果(!filterArray)返回inputArray;//这将返回未过滤的数组。
var resultArray=[];

对于(var i=0;i另一个实现

<div ng-repeat="item in items | filter: uid as results">

您在这里有一个空格:
$scope.items\u所有的
都更正了,但这不是问题所在!?tnhx明白了!…我的问题是现在如何使用ng click打开此筛选器?明白了!…我的问题是现在如何使用ng click打开此筛选器?您的附加参数可以是布尔值。在筛选器函数中,您可以检查它,然后单击ly返回输入数组或其筛选版本。因为它是一个范围变量,您可以在通过
ng click
调用的函数中修改附加参数的值,这应该立即反映在视图中。请提供一个代码示例。我不确定我是否理解正确?!我稍微修改了我的代码以反映它应该包含的内容类似于ook。如果附加参数为false,则返回原始数组,未经筛选。否则,它将创建第二个数组作为筛选版本,并返回该版本,并将显示该版本。切换该参数后,视图将立即更新。
<div ng-click="toggleFilterArray()">Toggle array filter</div>
<div ng-repeat="item in yourArray | arbitraryFilter:filterArray ">item.value</div>
<div ng-repeat="item in items | filter: uid as results">
$scope.pL = {
    myitems: function () {
        $scope.uid = 101 ; //enter your uid
     });
    },
    allitems: function () {
        $scope.uid = ""; //all
    }
};