根据项目在ANGULAR中的键为其添加一个字符串
put a string to an item depending on its key in ANGULAR
我有一个对象数组。
$scope.array [
{beast: 'rat', color: 'red', price: 5000, 'size', '100 kg'},
{beast: 'cat', color: 'white', price: 4000, 'size', '500 kg'},
{beast: 'bird', color: 'pink', price: 3000, 'size', '200 kg'}
]
在我的html中,我有:
<input type='text' ng-model='search'>
<p ng-repeat = "a in array | filter: search"></p>
我想在编写文本字段时开始显示项目。我只想通过文本字段中的"动物"或"颜色"进行过滤。
但我想如果我写下动物名称的一部分,它就会出现,例如,我写"ra",出现在项目上:
animal -> rat
如果我写"re",应该出现在列表中:
color -> red
但是如果我写"r",对于这个例子,2个项目应该以"r"开头
animal -> rat
color -> red
这不是最好的方法,我是新角度。
我做了一个plunkr,它可能有助于理解一些事情:http://plnkr.co/edit/jSiFb1Y0yQw5y7d06LXf
它可以进行大量重构和优化,但我还是保留了它,希望能让我们了解一下它是如何工作的。
基本上,这是一个简单的过滤器。每个过滤器首先接收项目,然后接收您传递给它的任何其他参数。在内部,您可以使用任何您喜欢的解决方案。
在我的解决方案中,我在里面添加了简单的if条件语句。当然,您可以使用regExps或其他解决方案来解析对象。
主要的解决方案是首先正确定义数组(上面的代码缺少equals,对象定义缺少一些分号):
app.controller('MainCtrl', function($scope) {
$scope.data = [
{beast: 'rat', color: 'red', price: 5000, size: '100 kg'},
{beast: 'cat', color: 'white', price: 4000, size: '500 kg'},
{beast: 'bird', color: 'pink', price: 3000, size: '200 kg'}
];
});
然后是过滤器:
app.filter('searchData', function() {
return function(items, searchText) {
var results = [];
angular.forEach(items, function(item) {
if(item.beast.indexOf(searchText) === 0) {
results.push('beast -> ' + item.beast);
}
if(item.color.indexOf(searchText) === 0) {
results.push('color -> ' + item.color);
}
});
return results;
};
});
此外,在p元素的ng重复上,您需要实际输出内部的内容,以便它显示,否则,它将重复空的p:
<input type='text' ng-model='search'>
<p ng-repeat = "item in data | searchData : search ">{{item}}</p>
希望这能有所帮助,
致问候,
拉法。
更新如果你不想在删除所有输入后显示结果,那么在每个输入之前都要做一个简单的If:
app.filter('searchData', function() {
return function(items, searchText) {
var results = [];
if(searchText) {
angular.forEach(items, function(item) {
if(item.beast.indexOf(searchText) === 0) {
results.push('beast -> ' + item.beast);
}
if(item.color.indexOf(searchText) === 0) {
results.push('color -> ' + item.color);
}
});
}
return results;
};
});
我已经用这个解决方案更新了plunker。
相关文章:
- 在 JS 中添加字符串之前强制换行
- javascript在动态Url中匹配并添加字符串
- 添加字符串+选择要输入的文本
- 通过向动态id添加字符串,使用JavaScript控制文本框
- 在哪里添加字符串原型
- 在 JavaScript 中添加字符串 “1” + - “2” == “1-2”
- 如何在javascript中的数组中添加字符串
- 如何在javascript/jquery中添加字符串美元金额
- 引用变量,它执行函数,但是向变量中添加字符串,将函数作为字符串而不是值返回
- 如何在 javaScript 中添加 C# 字符串作为文本弹出窗口
- AngularsJS JavaScript 匹配单词并添加字符串
- 使用 javascript 在括号内添加字符串
- 使用javascript进行大写,每隔换行一次,并在每一新行的开头添加字符串
- jQuery添加字符串而不是串联
- 正在向提交的URL末尾添加字符串
- 可以't使用concat添加字符串数组
- 如何自动添加字符串“;http://'当用户通过jquery在文本框中输入时
- jquery问题——向动态调用的元素添加字符串
- MVC 5 DropDownList向Jquery的值添加字符串
- 如何在单击链接/过滤器的基础上向onclick函数添加字符串?