在我的應用程序中,我試圖通過部分匹配從頭開始對名稱執行搜索過濾器。下面有什麼我試着做一個例子:嘗試使用Angular JS執行搜索過濾器的Javascript錯誤
可以說我有名字的列表:
Ben
James
Adam
Judy
Andy
,並在我的搜索欄中輸入文本"a"
,它將返回
Adam
Andy
如果我在搜索字段中輸入"an"
,則返回
Andy
在我app.js,我的代碼:
var myApp = angular.module("myApp", []);
myApp.controller("myController", function ($scope) {
var employees = [
{ name: "Ben", gender: "Male", salary: 55000, city: "London" },
{ name: "Jane", gender: "Female", salary: 62000, city: "Albany" },
{ name: "Rick", gender: "Male", salary: 65000, city: "Los Angeles" },
{ name: "Pam", gender: "Female", salary: 60000, city: "Paris" },
{ name: "Josh", gender: "Male", salary: 68000, city: "Brussels" },
];
$scope.employees = employees;
$scope.filtered = function (item) {
if ($scope.searchName == undefined) {
return true;
} else {
if (item.name.toLowerCase().startsWith($scope.searchName.toLowerCase()) != -1) {
return true;
}
}
return false;
}
});
而在我的html頁面,我有這顯示員工列表下面一行:
<tr ng-repeat="employee in employees | filter: filtered">
及以下線路將用戶輸入搜索文本:
<input type="text" placeholder="Search Name" ng-model="searchName.name"> <br><br>
然而,當我試圖測試,我得到的錯誤:
Error: $scope.searchName.toLowerCase is not a function. (In '$scope.searchName.toLowerCase()', '$scope.searchName.toLowerCase' is undefined)
謝謝。我把ng-model設置爲「searchName.name」,因爲在這種情況下,默認過濾器只會搜索「name」列,並且我認爲我的自定義過濾器需要它。 – skipper