我有一些功能在我的控制器和一个手表,隐藏和显示我的网页上的一些元素。角度手表并不总是工作
我最初创建的对象:
$scope.selectedItems = [];
使用某些功能时,我可以选择连接取消选择:
$scope.selectAllItems = function(items){
for(var i =0; i < items.length; i++){
items[i].selected = true;
$scope.selectedItems.push(items[i]._id);
}
}
$scope.deselectAllItems = function(items){
for(var i=0; i<items.length; i++){
items[i].selected = false;
$scope.selectedItems = [];
}
}
$scope.inverseAllItems = function(items){
$scope.selectedItems = [];
for(var i=0; i<items.length; i++){
items[i].selected = items[i].selected ? false : true;
if(items[i].selected)
$scope.selectedItems.push(items[i]._id);
}
}
$scope.selectItem = function(item){
console.log(item.selected);
if(item.selected){
console.log(item._id);
$scope.selectedItems.push(item._id);
}else{
console.log("hier2");
if($scope.selectedItems.indexOf(item._id))
$scope.selectedItems.splice($scope.selectedItems.indexOf(item._id),1)
}
}
而且在$scope.selectedItems
$scope.$watch("selectedItems", function handleSelectedItemsChange(newValue, oldValue){
console.log("$scope.selectedItems.length", $scope.selectedItems.length);
if($scope.selectedItems.length > 1){
$scope.multipleSelect = true;
$('.itemStatus').toggleClass('hidden', true);
}else{
$scope.multipleSelect = false;
$('.itemStatus').toggleClass('hidden', false);
}
})
手表的问题是,手表并不总是被触发。在使用'inverseSelection
'和'deselectAll
'功能后,它始终被触发,但在使用'selectAll
'和'selectItem
'(一个选择项目)后不会被触发,但我没有看到任何差异我推入selectedItems
阵列中的条目。
有人可以帮我吗?
作为一个数组,你应该使用'$ watchCollection' –
aaah。简单但这确实是解决方案。谢谢! – NVO
@PankajParkar你可以做出答案。 – Alok