gpt4 book ai didi

javascript - ng-show "call method"不起作用

转载 作者:行者123 更新时间:2023-11-30 08:00:34 25 4
gpt4 key购买 nike

我是 AngularJs 的新手,通过 w3schools 教程我创建了自己的示例,其中 ng-show 调用方法在 ng-click 事件后删除元素。

当我点击按钮时,它会调用HidePerson() 方法。此外,它多次调用 ShowPerson() 方法,它似乎可以找到,但只要它返回 true false 元素总是可见的。

这是我的代码。

var personCtrl = angular.module('person', []);
personCtrl.controller('personCtrl', function ($scope, $http) {
$scope.persons = [];
$scope.personIgnoreList = [];
$scope.GetPersons = function () {
$http.get('http://www.w3schools.com/website/Customers_JSON.php')
.success(function (data, obj1, obj2, obj3) {
$scope.persons = data;
})
.error(function (data, obj1, obj2, obj3) {
$scope.persons = "Ops... smth went wrong...";
})
};

$scope.ShowPerson = function (person) {
$($scope.personIgnoreList).each(function (i, p) {
if (p == person) {
return false;
}
});
return true;
}
$scope.HidePerson = function (person) {
$scope.personIgnoreList.push(person);

}
});
<div ng-app="person" class="container" ng-controller="personCtrl" ng-init="GetPersons()">
<div class="row">
<div class="col-md-3" ng-repeat="person in persons">
<div ng-show="ShowPerson(person)">
<button class="btn btn-lg btn-info"
ng-click="HidePerson(person)">
{{person.Name}} from {{person.City}} - {{person.Country}}
</button>
</div>
</div>
</div>
</div>

最佳答案

用这段代码

$($scope.personIgnoreList).each(function (i, p) {
if (p == person) {
return false;
}
});
return true;

您始终返回 true,因为从 $.each 返回与从函数返回不同(它只会中断循环)。

正确的方法是使用这样的东西:

$scope.ShowPerson = function (person) {
return !$scope.personIgnoreList.some(function(p) {
return p === person;
});
}

演示:http://plnkr.co/edit/yGy8x2k25Dkpu6hLj4eu?p=preview

关于javascript - ng-show "call method"不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29281663/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com