我創建了一個filter
,我想傳遞一個item屬性,而不是項目本身。那可能嗎?如何將ng-repeat項目屬性傳遞給過濾器?
下不起作用(item.param1失敗):
ng-reapeat="item in items | filter : fnFilter(item.param1)"
$scope.fnFilter = function(value) {
return value == "test";
}
我創建了一個filter
,我想傳遞一個item屬性,而不是項目本身。那可能嗎?如何將ng-repeat項目屬性傳遞給過濾器?
下不起作用(item.param1失敗):
ng-reapeat="item in items | filter : fnFilter(item.param1)"
$scope.fnFilter = function(value) {
return value == "test";
}
你的問題還不是很清楚sdince你不說真的有什麼是你的目標。
所以,如果我只是限制什麼,我看到那裏,下面的鏈接已經被@CeylanMumumKocabas提供Angular filter exactly on object key你會
ng-repeat="item in items | filter:{'param1': 'test'}"
現在讓我們考慮你想要的東西更復雜:我看到的唯一方法是該屬性的名稱傳遞到過濾器:
ng-reapeat="item in items | myFilter:'param1'"
myApp.filter('myFilter', function() {
return function(inputs,attributeName) {
var output = [];
angular.forEach(inputs, function (input) {
if (input[attributeName] == 'test')
output.push(input);
});
return output;
};
});
請注意,如果你想要去的不止一個級別,你將不得不使用$ EVAL或使添加一些代碼這個工作。
接近:我想將'item.param1'的值傳遞給過濾器。然後讓過濾器函數決定根據多個條件返回true或false。我不想僅基於一個值來過濾該屬性,就像你用'test'做的測試' – membersound
我剛剛從你的示例中拿出的那樣,我不認爲你可以將一個屬性傳遞給過濾器,這就是爲什麼我要通過屬性的名稱,所以我仍然可以匹配需要能夠過濾屬性,可以更改。 – Walfrat
檢查此:http://stackoverflow.com/a/20292780/5376197 –
和答案是什麼?鏈接的問題不*告訴如何將'ng-repeat'元素的屬性參數傳遞給過濾器函數。但這確實是這裏的問題。 – membersound
_「我創建了一個過濾器」_您爲過濾器過濾器創建了一個謂詞。你爲什麼不用'fnFilter'作爲「真實」謂詞的包裝呢?或創建一個實際的過濾器。 – zeroflagL