使用 angularJS 来进行测试,ng-reapt="pro in products | filter:search"
一个特别大的疑问
如下的这个测试,为什么 search
输入框中,输入 a
也会有结果
<!DOCTYPE html>
<html>
<head>
<script data-require="angularjs@1.5.5" data-semver="1.5.5" src="https://code.angularjs.org/1.5.5/angular.js"></script>
<link href="style.css" rel="stylesheet" />
<script src="script.js"></script>
</head>
<body>
<script>
var data = {
"products": [{
"key": "KEY1",
"name": "iPhone6S",
"is_in_presale": false
}, {
"key": "KEY2",
"name": "iPhone7",
"is_in_presale": true
}],
"activities": []
};
var cartApp = angular.module('cartApp', []);
cartApp.controller('ProductListCtrl', function($scope, $http) {
$scope.dump = function(input) {
console.log(input);
}
$scope.products = data.products;
// $scope.change();
});
</script>
<p ng-app="cartApp" ng-controller="ProductListCtrl">
<input type="text" ng-model="search">
<p style="clear: both"></p>
<p class="" style="float: left;width: 20%">
<h1>repeat</h1>
<ol>
<li ng-repeat="pro in products"> {{pro.name}} - {{pro.key}}</li>
</ol>
</p>
<p class="" style="float: left;">
<h1>normalProduct</h1>
<ol>
<li ng-repeat="pro in products | filter:search as result">{{pro.name}} - {{pro.key}}</li>
</ol>
</p>
{{dump(result)}}
</p>
</body>
</html>
http://plnkr.co/edit/wZIOF1uAvEgB9UPD1EnW?p=preview
PHP中文网2017-05-15 17:04:05
필터링할 필드를 지정하지 않으면 기본 필터가 모든 필드의 값과 일치합니다. a를 입력하면 각도는 기본적으로 false를 문자열로 변환하고 a는 false와 일치합니다. 필터 조건을 이렇게 바꾸면
으아악a를 입력하면 결과가 없습니다. 즉, 이름 필드의 값만 필터링된다는 의미입니다.
ringa_lee2017-05-15 17:04:05
ng
의 기본값은 제품
의 세 가지 필드인 key
, name
, is_in_presale
는 문자열로 변환되어 입력 내용과 비교되므로 a
는 실제로 false
의 a
와 일치합니다. true
를 입력해 보면 결과의 차이를 느낄 수 있습니다. ng
默认把你product
里三个字段key
,name
,is_in_presale
都转成字符串和你的输入去比较了,所以a
其实匹配到的是false
里的a
。你可以试试输入true
,就感受到结果区别了。
如果需要指定字段进行filter
필터
에 대한 필드를 지정해야 하는 경우 다음 문서를 참조하세요.
아니면 내 플런커를 보세요🎜