如何将localStorage变量插入ng-repeat,以便用户可以更改过滤器

时间:2015-01-09 19:14:28

标签: angularjs-ng-repeat

现在我有几个按钮会将值插入localStorage。我以为我可以获取值并将其插入ng-repeat行以更改过滤。

如果我使用普通过滤,这可行:

<div class='segment' ng-repeat="x in names | filter:x.bodyType='Buggy'">

但这不起作用:

<div class='segment' ng-repeat="x in names | filter:x.bodyType='<script>var show = localStorage.getItem('show'); show</script>'">

我没有使用Jquery或除AngularJS之外的任何其他JS或CSS框架。不使用PHP。这是一个简单的HTML5用于Web应用程序。

2 个答案:

答案 0 :(得分:1)

动态构建对象并将其传递给过滤器。

&#13;
&#13;
$scope.show = 'A';
$scope.base = function() {
    return $scope.show;
};
$scope.bodyType = function() {
    return {bodyType: $scope.base()};
};
$scope.objs = [{bodyType: 'A'}, {bodyType: 'B'}];
&#13;
<button ng-click="show='B'">Button</button>
<div ng-repeat="x in objs | filter: bodyType()">{{x}}</div>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

我不认为Angular能够插入表达式<script>...</script>。我建议您在控制器中使用localStorage服务获取值,如:

$scope.bodyType = function() {
  localStorage.getItem('show');
};
<div class='segment' ng-repeat="x in names | filter:x.bodyType='{{bodyType()}}'">