我对 AngularJS 还很陌生,但它绝对适合我的项目。
这是我的问题:
我的客户有一个静态编码 map (不是谷歌)。在此 map 上,我们有 15 个服装经销商(硬编码)。
我的 json 文件:
[
{
"id": "2",
"name": "Laden Dortmund",
"zip": 12345,
"stadt": "Dortmund",
"land": "DE",
"left": "200px",
"top": "300px"
},
{
"id": "1",
"name": "Laden Unna",
"zip": 45568
"stadt": "Unna",
"land": "DE",
"left": "250px",
"top": "400px"
}
]
等等...
使用“左”和“上”,我用标记标记我的 map :
<div class="map" ng-controller="DealerDetailListCtrl">
<a class="marker" id="{{marker.id}}" style="left:{{marker.left}};top:{{marker.top}}" ng-repeat="marker in dealer"></a>
</div>
这对所有条目都有效。
现在我们的客户想要通过邮政编码搜索条目。喜欢:
- Reseller1(邮政编码:45525)-> 应放置在 map 的该区域。
- Reseller2(邮政编码:12345)-> 应放置在 map 的 xx 区域。
等等。
我需要的是:
Angular JS 是否可以有一个像这样的搜索框:
<input type="text" name="postalcode" class="postalcode" ngRequired>
并搜索(例如)“45525”,我会得到该邮政编码内 +/- 的所有标记?
也许每个条目都会获得两个新节点“RangeStart”(开始:40000”)和“RangeEnd”(结束:50000”),如果我搜索“45525”,将显示所有条目,其中搜索词在范围内。
这可能吗?
最佳答案
我正在烤苹果派,所以无法更快地回复您,但正如您在评论中提到的那样,可以通过自定义过滤器实现这一点。
myApp.filter("zipFilter", function() { return function(markers, zipCode) {
var retMarkers = [];
var lowRange = parseInt(zipCode, 10) - 1000;
var highRange = parseInt(zipCode, 10) + 1000;
// console.log('low: ' + lowRange);
// console.log('high: ' + highRange);
// loop through all the markers
for(var i = 0, len = markers.length; i < len; ++i) {
var singleMarker = markers[i];
// if the marker falls within the range (+/- 1000)...
if(singleMarker.zip >= lowRange && singleMarker.zip <= highRange) {
retMarkers.push(singleMarker);
}
}
return retMarkers;
}});
在此处查看它在线运行 http://jsfiddle.net/CWcxL/7/并尝试输入“44100”,看看它如何根据一系列邮政编码过滤出结果(在本例中,输入的内容为 +/- 1000)。
祝你好运!
关于dictionary - AngularJS - 范围搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14093264/