2

我对 AngularJS 很陌生,但它绝对适合我的项目。

这是我的问题:
我的客户有一个静态编码地图(不是谷歌)。在这张地图上,我们有 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"
}
]

等等......
用“左”和“上”我用标记标记我的地图:

<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)-> 应放置在地图的此区域。
- Reseller2(邮政编码:12345)-> 应放置在地图的 xx 区域。等等。

我需要的是:
Angular JS 是否有可能有这样的搜索框:

<input type="text" name="postalcode" class="postalcode" ngRequired>

并搜索(例如)“45525”,我得到了这个邮政编码中+/-的所有标记?
也许每个条目都会得到两个新节点“RangeStart”(开始:40000“)和“RangeEnd”(结束:50000“),如果我搜索“45525”,所有条目都会显示,其中搜索词在范围内。

这可能吗?

4

1 回答 1

2

我正在烤一个苹果派,所以我不能更快地回复你,但正如你在评论中提到的那样,使用自定义过滤器可以做到这一点。

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 从任何已输入)。

祝你好运!

于 2012-12-30T20:32:52.637 回答