そのため、しばらくの間、「次を含む」ではなく、「開始」パラメーターを検索するカスタムフィルターを作成しようとしています。私が書いたすべてのフィルターが正しく機能していないようです。これが私が達成しようとしていることの例です---> http://jsfiddle.net/DMSChris/9ptr9/
function FilterCtrl() {
var scope = this;
scope.doFilter = function(elem) {
if(!scope.searchText) return true;
return elem.last_name.toLowerCase().indexOf( scope.searchText.toLowerCase()) == 0;
};
}
http://jsbin.com/OyubElO/1/edit -ここが私が今いるところです。
<ul border="1px" ng-repeat="msg in messages | filter:search:strict">
<li>{{msg.last_name}}</li>
どんな助けでも大歓迎です!
これを行う簡単な方法は、スコープに新しいメソッドを追加することです。
$scope.startsWith = function (actual, expected) {
var lowerStr = (actual + "").toLowerCase();
return lowerStr.indexOf(expected.toLowerCase()) === 0;
}
次に、要素のフィルター構文を変更します。
<ul border="1px" ng-repeat="msg in messages | filter:search:startsWith">
上記の例を使用した working plunkr です。
オブジェクトでフィルター
$scope.fmyData = $filter('filter')($scope.AllMyData, $scope.filterOptions,function (actual, expected) {
return actual.toLowerCase().indexOf(expected.toLowerCase()) == 0;
});
これで、純粋なjavascript
自体が文字列にstartsWith()
メソッドを持ちます。ただし、IE11
ではサポートされません。
こちらをご覧ください:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith