Javascript 在脚本之前对jQuery进行优先级排序

Javascript 在脚本之前对jQuery进行优先级排序,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,我的html文件中的脚本有问题。问题在于通过jQuery更新变量,然后从中创建图表 我使用angular创建图表,因此不可能将其放入不同的jQuery中 守则的一部分: var chartData = []; $.getJSON('../json/testData.json', function (json) { for (var i=0; i < json.length; i++){ var

我的html文件中的脚本有问题。问题在于通过jQuery更新变量,然后从中创建图表

我使用angular创建图表,因此不可能将其放入不同的jQuery中

守则的一部分:

var chartData = [];

            $.getJSON('../json/testData.json', function (json) {
                for (var i=0; i < json.length; i++){
                    var j = json[i].Value;
                    chartData.push(j);
                }
            });

angular.module("app", ["chart.js"]).controller("BarCtrl", function ($scope) {

            $scope.labels = ['2006', '2007', '2008', '2009', '2010', '2011', '2012'];
            $scope.series = ['Series A', 'Series B'];
            $scope.data = [
                [65, 59, 80, 81, 56, 55, 40],
                [28, 48, 40, 19, 86, 27, 90],
                chartData
            ];
        });
var chartData=[];
$.getJSON('../json/testData.json',函数(json){
for(var i=0;i
我试图实现的是:从JSON获取数据,更新chartData,将更新的变量放入图表中

目前它是如何工作的?->它执行所有操作,然后是jQuery,所以我在图表中有空数组

我的研究: 我试图操作jQuery的变量和范围。结果仍然是一样的。 当我把所有的东西都放到函数中时,angular不起作用

解决方案如下:

    angular.module("app", ["chart.js"]).controller("BarCtrl", function ($scope, $http) {

        $http.get('../json/testData.json').then(function (response) {
            for (var i = 0; i < response.data.length; i++) {
                var j = response.data[i].Value;
                jsondata.push(j);
            }
        });
angular.module(“app”,[“chart.js”]).controller(“BarCtrl”,函数($scope,$http){
$http.get('../json/testData.json')。然后(函数(响应){
对于(var i=0;i
为什么不在控制器中使用
$http
服务来获取数据,然后将其放在作用域中:

angular.module("app", ["chart.js"]).controller("BarCtrl", function ($scope, $http) {
    $scope.data = [];
    $http.get('../json/testData.json').then(function (response) {
        for (var i = 0; i < response.data.length; i++) {
            var j = response.data[i].Value;
            chartData.push(j);
        }
    });
});
angular.module(“app”,[“chart.js”]).controller(“BarCtrl”,函数($scope,$http){
$scope.data=[];
$http.get('../json/testData.json')。然后(函数(响应){
对于(var i=0;i
是否尝试将
angular.module
语句移动到
$.getJSON
回调中(就在
for
循环之后?或者,将
getJSON
移动到
angular.module
回调中。这两个进程都是异步执行的,因此您必须想出一种方法让它们互相等待。Max提到jQuery承诺;这是一个不错的选择。异步(getJSON)和同步代码混合使用(整个算法)。看看承诺(但不是jQuery承诺)谢谢你。我找不到像你这样的解决方案。它工作得很好!@Maltesse,也许你可以投票或者接受答案,我正在尝试,但我必须有15个声誉。Sorry@Maltesse,我对你的问题投了赞成票,你现在应该有足够的声誉:)@Maltesse,谢谢)