1

這是我有:AngularJS NG-重複某些過濾器表達式

<div data-ng-if="hasSelectedCompany"> 
    <tbody data-ng-repeat="driver in result.applications | filter: { name: selectedApplication } track by $index"> 
</div> 
<div data-ng-if="hasSelectedSupportedCompany"> 
    <tbody data-ng-repeat="driver in result.applications | filter: { name: selectedSupportedApplication } track by $index"> 
</div> 

而且我知道這是可以改善的,我只是不知道如何。現在不行。當我有這兩個表達式時,第一個表達式不起作用。當我完全刪除第二個表達式時,第一個表達式開始工作。第二個與他們兩個一起工作。

什麼是替代方法來實現這一目標?

謝謝!

+0

你能提供jsfiddle jow它不工作嗎? – Grundy

回答

2

兩個過濾器都不會一起工作,因爲兩者都指的是相同的result.applications

你需要做兩者的過濾陣列通過將其分配到像applicationsForCompany不同變量爲hasSelectedCompany DIV & applicationsForSupportedCompany分離爲hasSelectedSupportedCompany DIV

標記

<div data-ng-if="hasSelectedCompany"> 
    <tbody data-ng-repeat="driver in applicationsForCompany = (result.applications | filter: { name: selectedApplication }) track by $index"> 
</div> 
<div data-ng-if="hasSelectedSupportedCompany"> 
    <tbody data-ng-repeat="driver in applicationsForSupportedCompany = (result.applications | filter: { name: selectedSupportedApplication }) track by $index"> 
</div> 
+0

非常感謝您的回覆。有什麼辦法可以使這個工作與共享變量?我有一些低於這個邏輯的邏輯,我根據第一個結果做了另一個ng-repeat。 – Drew

+0

除非我刪除第二個表達式,否則第一個仍然不起作用。 – Drew

0
<html ng-app="app"> 

    <head> 
    <link rel="stylesheet" href="style.css"> 
    <script src="https://code.angularjs.org/1.4.0/angular.js"></script> 
    <script src="script.js"></script> 
    </head> 

    <body ng-controller="mainCtrl"> 
    <input type="text" ng-model="search"> 
    <input type="text" ng-model="search1"> 
    <div ng-repeat="d in data|filter:{name:search}">{{d.name}}</div> 
    <div ng-repeat="d in data|filter:{name:search1}">{{d.name}}</div> 
    </body> 

</html> 

angular.module('app',[]).controller('mainCtrl',['$scope',function($scope){ 
    $scope.data = [{id:1,name:'cata',surname:'obreja'},{id:2,name:'dani',surname:'popa'},{id:3,name:'Sir',surname:'dani'}]; 
}]); 

下面是一個例如,但我不知道,如果它是你在找什麼。 這裏是plnkr http://plnkr.co/edit/W7ZofMcZMKTfw3BUB4jX?p=preview