Javascript 更新列表时的角度过滤器行为
我有两个ng repeat,其中第一个列表中的选定项通过对象属性过滤第二个列表。然后有可能将项目添加到两个列表中。这里说明了结构:Javascript 更新列表时的角度过滤器行为,javascript,angularjs,filter,Javascript,Angularjs,Filter,我有两个ng repeat,其中第一个列表中的选定项通过对象属性过滤第二个列表。然后有可能将项目添加到两个列表中。这里说明了结构: <div class="list-container"> <div class="list-item" ng-repeat="class in classList" ng-click="setActiveClass(class)"> {{class.name}} </d
<div class="list-container">
<div class="list-item"
ng-repeat="class in classList"
ng-click="setActiveClass(class)">
{{class.name}}
</div>
</div>
<div class="input-group">
<input type="text" ng-model="newClassName">
<button ng-click="addNewClass()">Add</button>
</div>
<div class="list-container">
<div class="list-item"
ng-repeat="item in itemsList | filter:{class: activeClass}">
{{item.name}}
</div>
</div>
<div class="input-group">
<input type="text" ng-model="newItemName">
<button ng-click="addNewItem()">Add</button>
</div>
问题是,当添加新类项时,第二个列表显示所有项,就像没有过滤器一样。如果我选择新类以外的任何类,则过滤器将按预期工作,但在新类上,过滤器将显示数组中的所有元素。可能会发生什么?您可能需要在筛选器周围加括号:
ng repeat=“item in(itemsList | filter:{class:activeClass})”
@DavinTryon请原谅我发布的问题不完整。现在读它,它是完整的。我尝试添加了括号,但没有解决问题。这是按照您的意愿工作还是我误解了@tasseKATT是的,这是预期的行为,您是否对我发布的代码进行了任何更改(我没有看到任何更改)?这不是原始代码,因为我不能在这里发布,只是一个草图,我希望可以重现这个问题。在最初的情况下,列表包含对象并从工厂服务链接到,这可能是相关的吗?我没有更改任何内容。我想可能会,很难说没有看到代码,对不起。
.controller('controller', function () {
$scope.classList = [
{
'name': 'Class 1'
},
{
'name': 'Class 2'
},
{
'name': 'Class 3'
}
];
$scope.itemsList = [
{
'name': 'Item 1',
'class': $scope.classList[0]
},
{
'name': 'Item 2',
'class': $scope.classList[1]
},
{
'name': 'Item 3',
'class': $scope.classList[2]
}
];
$scope.activeClass = {};
$scope.setActiveClass = function (newActiveClass) {
$scope.activeClass = newActiveClass;
};
$scope.addNewClass = function () {
var nl = $scope.classList.push({
'name': $scope.newClassName
});
$scope.activeClass = $scope.classList[nl-1];
};
$scope.addNewItem = function () {
$scope.itemsList.push({
'name': $scope.newItemName,
'class': $scope.activeClass
});
};
});