AngularJS 筛选为真
AngularJS filter true
我正在尝试根据 accountID 进行过滤,我只想一次返回一条记录。我有以下代码,如果我设置过滤器:查询:true,则没有数据显示。当我将 true 添加到 ng-repeat 时会发生这种情况。为什么当我将它设置为 true 时它没有带回任何记录?这是我的代码:
<div ng-controller="LookUpCtrl as vm">
<div>
<input type="text" id="searchText" name="searchText" ng-model="query.accountId" />
</div>
<div ng-if="query" ng-repeat="result in vm.results | filter: query : true">
<div class="col-lg-4"><h2>{{result.accountName}}</h2></div>
<div class="col-lg-4"><h2>[{{result.ordernumber}}]</h2></div>
<div class="col-lg-4">Images go here</div>
</div>
<div>
在官方 AngularJS 文档中有一个示例,说明您应该如何使用过滤器以及对 comparator
是什么的解释(在您的情况下 true
)。
这里有一个例子:http://plnkr.co/edit/Cv3B1j?p=preview
当您将比较器设置为 true
时,如文档所述:"This is essentially strict comparison of expected and actual." 这意味着您在搜索框中写入的内容必须完全相同作为您要过滤的对象中的字段。
如果你愿意,你可以提供一个 plunker,这样可以更容易地重现你的错误并解决它。
编辑:
现在我明白你的问题了。这是它的一个工作 plunker:
http://plnkr.co/edit/pFd5bOmnm2nEL98TJgi5
问题是您的 ID 是数字而不是字符串。
如果您仍想将您的 ID 管理为数字,您可以设置一个数字类型的输入,它会起作用。
<input type="number" id="searchText" name="searchText" ng-model="query.accountId" />
查看您的代码后,我现在明白了为什么在按 accountId 过滤时您的数据没有出现。响应对象中的值是一个整数,文本框中用于比较的输入是一个字符串。在进行严格搜索时,这永远不会评估为真。当 accountId 值是一个字符串时,我能够在你的 plunker 中正确过滤它。您的数组中有一些新对象正在测试它。
{
accountId: '3',
...
name: 'Mr. This'
},
{
accountId: '4',
...
name: 'Mr. That'
},
{
accountId: '44',
...
name: 'Mr. This'
}
这是更新后的 link 和您的插件(已更新以加载 angular 和应用程序)。请无视我对控制器结构的重新配置..
我正在尝试根据 accountID 进行过滤,我只想一次返回一条记录。我有以下代码,如果我设置过滤器:查询:true,则没有数据显示。当我将 true 添加到 ng-repeat 时会发生这种情况。为什么当我将它设置为 true 时它没有带回任何记录?这是我的代码:
<div ng-controller="LookUpCtrl as vm">
<div>
<input type="text" id="searchText" name="searchText" ng-model="query.accountId" />
</div>
<div ng-if="query" ng-repeat="result in vm.results | filter: query : true">
<div class="col-lg-4"><h2>{{result.accountName}}</h2></div>
<div class="col-lg-4"><h2>[{{result.ordernumber}}]</h2></div>
<div class="col-lg-4">Images go here</div>
</div>
<div>
在官方 AngularJS 文档中有一个示例,说明您应该如何使用过滤器以及对 comparator
是什么的解释(在您的情况下 true
)。
这里有一个例子:http://plnkr.co/edit/Cv3B1j?p=preview
当您将比较器设置为 true
时,如文档所述:"This is essentially strict comparison of expected and actual." 这意味着您在搜索框中写入的内容必须完全相同作为您要过滤的对象中的字段。
如果你愿意,你可以提供一个 plunker,这样可以更容易地重现你的错误并解决它。
编辑:
现在我明白你的问题了。这是它的一个工作 plunker:
http://plnkr.co/edit/pFd5bOmnm2nEL98TJgi5
问题是您的 ID 是数字而不是字符串。
如果您仍想将您的 ID 管理为数字,您可以设置一个数字类型的输入,它会起作用。
<input type="number" id="searchText" name="searchText" ng-model="query.accountId" />
查看您的代码后,我现在明白了为什么在按 accountId 过滤时您的数据没有出现。响应对象中的值是一个整数,文本框中用于比较的输入是一个字符串。在进行严格搜索时,这永远不会评估为真。当 accountId 值是一个字符串时,我能够在你的 plunker 中正确过滤它。您的数组中有一些新对象正在测试它。
{
accountId: '3',
...
name: 'Mr. This'
},
{
accountId: '4',
...
name: 'Mr. That'
},
{
accountId: '44',
...
name: 'Mr. This'
}
这是更新后的 link 和您的插件(已更新以加载 angular 和应用程序)。请无视我对控制器结构的重新配置..