gpt4 book ai didi

javascript - 在 AngularJS 中过滤所有内容

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

我是 AngularJS 的初学者,我有一个问题,这里是我的代码:

$scope.categories = [{
"id": 506,
"name": "test"
}, {
"id": 510,
"name": "aaa"
}, {
"id": 1,
"name": "bbb"
}, {
"id": 2,
"name": "ccc"
}, {
"id": 3,
"name": "eee"
}, {
"id": 4,
"name": "fff"
}];

$scope.contents = [{
"id": 0,
"categoryId": 506,
"title": "test1"
}, {
"id": 1,
"categoryId": 506,
"title": "test2"
}, {
"id": 2,
"categoryId": 506,
"title": "test3"
}, {
"id": 3,
"categoryId": 1,
"title": "test4"
}];

<div>
<label>
<input type="radio" name="category" ng-model="cc" ng-value="" checked/>all
</label>

<label ng-repeat="categoryItem in categories" ng-init="i= $parent">
<input type="radio" name="category" ng-model="i.cc" ng-value="{{categoryItem.id}}" />{{categoryItem.id}}
</label>
</div>

<ul>
<li ng-repeat="content in contents | filter:{categoryId: cc||undefined}">
<h3>id:{{content.categoryId}}</h3>
<p>{{content.title}}</p>
</li>
</ul>

我希望能够通过选择广播来查看所有项目,此外,我希望始终选择第一个项目。就像现在它不起作用,我真的不知道为什么。

最佳答案

一些问题/更改:-

  • 不要对 ng 值使用插值,即 ng-value="{{categoryItem.id}}"应该是ng-value="categoryItem.id" 。 ng-value 可以只是一个表达式或一个将分配给 ng-model 的范围属性。

  • 请勿使用 ng-init $parent从 View 上看,它们不是需要使用的模式。 Instead use dot rule 。在 Controller 中定义过滤器对象,并将过滤器对象上的属性categoryId设置为单选按钮的ng-model。

    <input type="radio" name="category"
    ng-model="categoryFilter.categoryId" ng-value="categoryItem.id" />{{categoryItem.id}}

  • 只需设置 categoryFilter 即可清除过滤器至{}点击all过滤,并使用 ng-checked。

    全部

  • 只需将过滤器与 ng-repeat 一起使用,如下所示:

     <li ng-repeat="content in contents | filter:categoryFilter">

演示

var app = angular.module('plunker', []);

app.controller('MainCtrl', function($scope) {
$scope.categoryFilter = {};
$scope.categories = [{
"id": 506,
"name": "test"
}, {
"id": 510,
"name": "aaa"
}, {
"id": 1,
"name": "bbb"
}, {
"id": 2,
"name": "ccc"
}, {
"id": 3,
"name": "eee"
}, {
"id": 4,
"name": "fff"
}];
$scope.clearFilter = function() {
$scope.categoryFilter = {};
}
$scope.contents = [{
"id": 0,
"categoryId": 506,
"title": "test1"
}, {
"id": 1,
"categoryId": 506,
"title": "test2"
}, {
"id": 2,
"categoryId": 506,
"title": "test3"
}, {
"id": 3,
"categoryId": 1,
"title": "test4"
}];


});
<!DOCTYPE html>
<html ng-app="plunker">

<head>
<meta charset="utf-8" />
<title>AngularJS Plunker</title>
<script>
document.write('<base href="' + document.location + '" />');
</script>
<link rel="stylesheet" href="style.css" />
<script data-require="angular.js@1.3.x" src="https://code.angularjs.org/1.2.23/angular.js" data-semver="1.3.9"></script>
<script src="app.js"></script>
</head>

<body ng-controller="MainCtrl">
<div>
<label>
<input type="radio" name="category1" ng-click="categoryFilter={}" ng-checked="!categoryFilter.categoryId" />all
</label>

<label ng-repeat="categoryItem in categories">
<input type="radio" name="category" ng-model="categoryFilter.categoryId" ng-value="categoryItem.id" />{{categoryItem.id}}
</label>
</div>

<ul>
<li ng-repeat="content in contents | filter:categoryFilter">
<h3>id:{{content.categoryId}}</h3>
<p>{{content.title}}</p>
</li>
</ul>
</body>

</html>

关于javascript - 在 AngularJS 中过滤所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27975297/

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