js:使用angular的http获取json数据

Posted dYb

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js:使用angular的http获取json数据相关的知识,希望对你有一定的参考价值。

一,本例中使用amaze的select框架,配合angular显示json数据

框架官网链接:http://amazeui.org/javascript/selected

由于页面的异步刷新导致select配置完成后不再接收angular的数据,导致数据无法显示,这里解决使用setTimeout延迟select框架的配置

完成angular数据的植入

1,使用的json数据:

2,具体实现代码:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <!--引入amaze下拉选框需要的资源-->
    <script type="text/javascript" src="../../public/javascript/chosen/chosen.jquery.min.js"></script>
    <link type="text/css" rel="stylesheet" href="../../public/javascript/chosen/chosen.min.css" />

    <script src="../../public/angular-1.6.5/angular.js"></script>
    <script type="text/javascript" src="../../public/javascript/jquery-1.11.1.min.js"></script>

</head>

<script language="JavaScript">
    var app = angular.module(\'shop\', []);
    app.controller(\'shopCrl\', function($scope,$http) {
        //$scope.pron=[{id:1,name:\'成都市\'},{id:2,name:\'彭州市\'},{id:3,name:\'德阳市\'}];
        var coun;
        var strn;

        //使用angular http方法接收数据
        $http({
            method: \'GET\',
            url: \'../../public/site.json\'
        }).then(function successCallback(response) {
            //初始化选择框
            $scope.pron = response.data.pro;
            strn = response.data.pro;
            $scope.selectedItems=$scope.pron[0].proname;
            $scope.strn=strn[0].proargs;
            $scope.selectedItemsStr=$scope.strn[0].strname;
            $scope.coun=$scope.strn[0].strargs;
            coun=strn[0].proargs;
        }, function errorCallback(response) {
        });
        $scope.getpro=function(){
        }
        //选择州级
        $scope.chapro=function(selectedItems){
            strn.forEach(function(val,i,strn){
                //遍历数据查找与表相等的数组
                if(selectedItems==strn[i].proname){
                    $scope.strn = strn[i].proargs;
                    //改变ng-model的值
                    $scope.selectedItemsStr=$scope.strn[0].strname;
                    coun=strn[i].proargs
                }
            })
        };
        //选择市级
        $scope.chastr=function(selectedItemsStr){
            coun.forEach(function(val,i,coun){
                if(selectedItemsStr==coun[i].strname){
                    $scope.coun = coun[i].strargs;
                }
            })

        };
    });


</script>
<body ng-app="shop">
<div ng-controller="shopCrl">
    <div class="frmInputBox frmInputBoxNoTextLimit">
        <div class="selectionGroup">
            <div class="dropDown"  style="width:120px;">
                <!--<select data-placeholder="所在州" class="chosen-select-no-single" ng-click="getpro()" tabindex="9"  ng-model="selectedItems" ng-change="chapro(selectedItems)">-->
                <select data-placeholder="所在州" id="pro" class="" ng-click="getpro()" tabindex="9"  ng-model="selectedItems" ng-change="chapro(selectedItems)">
                    <option value=""></option>
                    <option ng-repeat="item in pron">{{item.proname}}</option>
                </select>
            </div>
        </div>
        <div class="selectionGroup">
            <div class="dropDown"  style="width:120px;">
                <select ng-model="selectedItemsStr" id="str" style="height: 37px;width: 118px" ng-change="chastr(selectedItemsStr)" tabindex="9">
                    <option ng-repeat="item in strn" >{{item.strname}}</option>
                </select>
            </div>
        </div>
        <div class="selectionGroup">
            <div class="dropDown"  style="width:120px;">
                <select style="height: 37px;width: 118px" id="cou"  tabindex="9">
                    <option ng-repeat="item in coun" value="{{item.couid}}">{{item.couname}}</option>
                </select>
            </div>
        </div>
    </div>
</div>
</body>
<script type="text/javascript">
    //配置选择框,使用setTimeout延迟加载框架配置,让angular的数据先一步进入
    setTimeout(function() {
        $("#pro").addClass("chosen-select-no-single");
        $("#str").addClass("chosen-select-no-single");
        $("#cou").addClass("chosen-select-no-single");
        /*
         .chosen-select-no-single\' : {disable_search_threshold:10} option小于10项隐藏搜索框。
         .chosen-select-deselect\':{allow_single_deselect:true}    设置为 true 时非必选的单选框会显示清除选中项图标
         .chosen-select-no-results\': {no_results_text:\'Oops, nothing found!\'} 没有搜索到结果的时候显示的内容
         */
        var config = {
            \'.chosen-select\': {},
            \'.chosen-select-deselect\': {allow_single_deselect: true},
            \'.chosen-select-no-single\': {disable_search_threshold: 10},
            \'.chosen-select-no-results\': {no_results_text: \'Oops, nothing found!\'},
            \'.chosen-select-width\': {width: "100%"}
        }
        for (var selector in config) {
            $(selector).chosen(config[selector]);
        }
        $(\'.chosen-select\').chosen();
    },10);
</script>
</html>

 

以上是关于js:使用angular的http获取json数据的主要内容,如果未能解决你的问题,请参考以下文章

Angular获取项目中定义的json文件

angular js 多处获取ajax数据的方法

angular.js > 如何在视图中获取内部 JSON 数据(使用 ng-repeat 指令)

angular.js 头部默认值,不使用json提交数据

使用来自 API 的 $http.get 进行 Angular.js 本地开发

使用 $http 加载 json 数据时的 Angular-grid