gpt4 book ai didi

javascript - Angular JS过滤器

转载 作者:行者123 更新时间:2023-11-30 12:54:10 25 4
gpt4 key购买 nike

我是 AngularJS 的新手,刚开始在其中做一些事情,

我有一个非常基本的疑问,

程序编号:1

<body data-ng-app data-ng-init="nodes=[{name: 'T', age: 25},{name: 'A', age: 26},{name: 'R', age:27}]">
<div />

Filter of the data : {{names}}
<br>
<input type="text" data-ng-model="filtername"> {{filtername}}
<br>

<hr>
<ul>
<li data-ng-repeat="node in nodes| orderBy: 'name' | filter: filtername">{{node.name|uppercase}} - {{node.age}}</li>
</ul>

<script type="text/javascript" src="scripts/angular/angular.js"></script>
</body>

该程序以其应有的方式处理过滤器。

程序编号:2

<div data-ng-controller="Controller_Contact_View">

Name:<input type="text" data-ng-model="name" />
Email:<input type="text" data-ng-model="email" />
<button data-ng-click="add()">Add</button>

<hr>
Search on Name:<input type="text" data-ng-model="searchName" />{{searchName}}

<h2>Contacts</h2>
<ul>
<li data-ng-repeat="contact in contacts| orderBy: 'getName()'| filter: searchName"><b>{{ contact.getName() }}</b> - <a href="mailto:{{contact.getEmail()}}">{{contact.getEmail()}}</a></li>
</ul>

</div>

<script type="text/javascript" src="scripts/angular/angular.js"></script>

<script>
function Controller_Contact_View($scope) {

$scope.contacts = new Array();
//var contacts = ;\

var c = new Contact('A', 'email_' + 12 + '@pkrm.com');
$scope.contacts.push(c);

c = new Contact('R', 'email_' + 1 + '@pkrm.com');
$scope.contacts.push(c);

c = new Contact('V', 'email_' + 41 + '@pkrm.com');
$scope.contacts.push(c);

c = new Contact('T', 'email_' + 11 + '@pkrm.com');
$scope.contacts.push(c);

c = new Contact('K', 'email_' + 10 + '@pkrm.com');
$scope.contacts.push(c);

$scope.add= function(){
var n = $scope.name;
var e = $scope.email;
var c = new Contact(n, e);
$scope.contacts.push(c);
$scope.name = $scope.email = "";
};
}
</script>

<script>

var Contact = function(name, email){

this.name = name;
this.email = email;

return({
getName : function(){
return name;
},
getEmail : function(){
return email;
},
setName : function(n){
name = n;
},
setEmail : function(e){
email = e;
}
});
};

</script>

它们都是一样的,但是过滤器在程序 2 中不起作用

求指点,问题出在哪里

最佳答案

我认为这是因为您有返回值的方法列表而不是值列表。如果我们打印 <pre>{{contacts|json}}</pre> ,我们得到空列表。因此,要使其正常工作,请使用自定义过滤器,例如:

.filter('myfilter', function() {
return function( items, types) {
var filtered = [];
console.log(types);

if(types === undefined || types == ''){return items;}

angular.forEach(items, function(item) {
if(item.getName() == types){
filtered.push(item);
}
});

return filtered;
};
});

HTML:

<li data-ng-repeat="contact in contacts| orderBy: 'getName()'| myfilter:searchName">

演示 Fiddle

关于javascript - Angular JS过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19852886/

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