【发布时间】:2016-10-05 09:35:09
【问题描述】:
当另一个作用域 ($scope.switch) 设置为 true 时,我想输出应用到作用域 ($scope.names) 的 lodash 函数的结果,并输出该 lodash 函数的结果当$scope.switch 设置为false 时应用于filtered 范围。
所以我的ng-repeat 会是这样的:
<ul>
<li ng-repeat="things in (filtered=(names | filter:filterType))">{{things}}</li>
</ul>
我使用两个ng-click 来更改 $scope.switch 的状态并应用/取消应用过滤器:
<a ng-click="switch = false; filterType=''">unswitch - No Filters</a><br><br>
<a ng-click="switch = true; filterType={name:'!Jimmy'}">switch - Not Jimmy</a>
我使用这段代码来观察$scope.switch的变化:
$scope.$watch('switch', function() {
$scope.thingScope =$scope.switch ? _.map($scope.names,"styles") : _.map($scope.filtered,"styles");
});
这是 all the code 的工作 plunkr(在这里更容易注意到问题)
问题是$scope.thingScope的输出与ng-repeat显示的值不对应(现在每次点击都显示上一个的值,也就是走一步在后面)。提前致谢!
【问题讨论】:
-
过滤器和
$scope.thingScope没有问题,对不起。当您单击过滤器时,它不会显示 Jimmy 数据。它有什么问题? -
@JoséLezama 输出部分应显示过滤列表部分中的“样式”数组。如果您现在检查它,当您单击 switch 时,过滤后的列表显示三个元素,而输出部分显示两个。这没有按预期工作,因为输出部分是将映射函数应用于过滤范围的结果(应该包含列表中显示的元素)。总而言之,当一个部分有三个元素时,另一个应该也有三个。
标签: angularjs