根据条件加载两个不同的json

时间:2014-08-31 11:05:16

标签: javascript json angularjs

我想知道如何根据条件加载2个不同的json

.controller("myCtrl", ['$scope','$http', function($scope, $http) {   

        if (lang==1){
                $scope.myVariable = [];
            $http.get('json/data.json').success (function(data){
                $scope.myVariable = data;
            });
        }
        else if (lang==2){
            $scope.myVariable = [];
            $http.get('json/data_ar.json').success (function(data){
                $scope.myVariable = data;
            }); 

        }

    }])   

变量传递给lang但json没有加载,如果lang == 2

我想加载data.json如果是english和data_ar.json为阿拉伯语。我点击锚标记

这样做

3 个答案:

答案 0 :(得分:1)

请将以下代码放在任何类似的方法中:

.controller("myCtrl", ['$scope','$http','$rootScope','$route', function($scope, $http,$rootScope,$route) {  


        if ($rootScope.lang==1){
                $scope.myVariable = [];
            $http.get('json/data.json').success (function(data){
                $scope.myVariable = data;
            });
        }
        else if ($rootScope.lang==2){
            $scope.myVariable = [];
            $http.get('json/data_ar.json').success (function(data){
                $scope.myVariable = data;
            }); 

        }

     $scope.loadData=function(lang){
         $rootScope.lang=lang;
         $route.reload();
     }

}])

和html代码:

<a ng-click="loadData(2)">arabic formate</a>

或者您已经这样做了然后请发布与该功能相关的完整html和控制器代码,以便我可以看到您在哪里犯了错误。

答案 1 :(得分:1)

我想,您已在HTML页面中定义了lang。确保定义包含具有ng-controller="myCtrl"属性的元素。 现在使用if ($scope.lang==2)代替if (lang==2)

答案 2 :(得分:1)

您在lang切换脚本中定义了另外的lang个变量。所以改变:

if(lang==1){ var lang=2; } else if(lang==2){ var lang=1; }

为:

if(lang==1){ lang=2; } else if(lang==2){ lang=1; }