angularjs国家代码通过$ http请求从jsonfile查找

时间:2017-01-29 20:42:30

标签: javascript angularjs json angularjs-scope angularjs-http

我正在尝试从json文件中查找国家/地区代码以获取完整的国家/地区名称:

$scope.fullname = function (option) {
    $http.get('files/names.json').success(function (data) {     
        for (var i = 0; i < data.length; i++) {         
            if (data[i].key === option)
                return data[i].value;
        }
    })
};

并在标记中:

<td class="secondary-text">{{fullname (list.countrycode) }}</td>

我收到严重错误,浏览器崩溃了。 有人可以帮我解决这个问题吗?如何将列表存入内存,然后从该列表中查找国家/地区代码?

我的json文件是这样的:

{
    "BD": "Bangladesh",
    "BE": "Belgium",
    "BF": "Burkina Faso",
    "BG": "Bulgaria",
    "BA": "Bosnia and Herzegovina",
    "BB": "Barbados",
    "WF": "Wallis and Futuna",
    "BL": "Saint Barthelemy",
    "BM": "Bermuda",
    "BN": "Brunei",
...

1 个答案:

答案 0 :(得分:4)

当然浏览器会崩溃:

<td class="secondary-text">{{fullname (list.countrycode) }}</td>

你知道调用fullname()函数多少次了吗?每个摘要周期!这发生了很多次。

在您的控制器中,您应该直接从控制器内为服务器创建单次呼叫

$http.get('files/names.json').success(function (data) {   
    $scope.fullnames = data;      
})

在视图中,您可以执行类似

的操作
<td class="secondary-text" ng-repeat="(key,value) in fullnames" ng-if="key  == list.countrycode">{{value }}</td>

我不知道您的HTML是什么样的,但您也可以通过使用一次性绑定来改进它,例如:

    <td class="secondary-text" ng-repeat="(key,value) in ::fullnames" ng-if="key  == list.countrycode">{{value }}</td>