i trying implement 2 functions in an angular app implement filter (start letters to), code stops working. on own, (add/delete) functions work turn data factory , try access filter functions fails.
working functions:
$scope.items = items; $scope.deleteitem = function (index) { items.data.splice(index, 1); } $scope.additem = function (index) { items.data.push({ name: $scope.newitemname }); }
what causes whole thing break:
//filtering letters _ not working function setletters (from, to){ this.fromletter = from; this.toletter = to; } //---- $scope.filter.startswithletter = function () { return function (items, fromletter, toletter) { var filtered = []; (var = 0; < items.length; i++) { var item = items[i]; var firstletter = item.name.substring(0, 1).tolowercase(); if ((!fromletter || firstletter >= fromletter) && (!toletter || firstletter <= toletter)) { filtered.push(item); } } return filtered; }; });
//--filtering letters
full code here: fiddle
there's few issues in fiddle. first i'm seeing "unexpected token )"
error due )
on line 58.
then when fix there issue on line 45 trying assign value $scope.filter.startswithletter
, when $scope.filter
undefined. think want assign value $scope.startswithletter
.
there still problem filtering. when filtering ng-repeat
can specify filter or a predicate function. in each case arguments passed function different - please read docs. function as-is designed used in filter created angular.module('myapp', []).filter()
. doesn't work when set on scope , pass filter:
predicate function. if prefer filter using function on scope, rather creating reusable custom filter, need change accept correct arguments - see fiddle.
your page trying access setletters
in $scope.items.data
not setting $scope.items.data.setletters
. don't think makes sense set there inside items.data
anyway. perhaps set directly on scope? set fromletter
, toletter
directly on scope.
i moved setletter buttons inside <div ng-controller="itemscontroller" >
fiddle fixes
Comments
Post a Comment