如何在AngularJS应用程序加载$scope之前初始化array



我的AngularJS应用程序有问题。在我的html视图中,我有一个包含JavaScript对象的列表。

<div ng-init="initWeek()" ng-controller="TableController">
<div id="TaskImages"> <div ng-repeat="task in taskList"> <div id="TaskImg" ><br>      {{task.title}}<br>{{task.start}} </div>   </div></div>  

我使用Jquery/Ajax设置taskList,它从服务器获取所有的任务对象。

function getTaskFromServer() {
$.ajax({
    type : "POST",
    url : "main_page",
    success : function(data) {
        var taskList = $.parseJSON(data);
        week[0].push(taskList[0]);
    },
}); 

我的控制器是这样的:

$scope.initWeek = function() {
    getTaskFromServer();
};
$scope.taskList = week[currentlySelectedDay-1];

当我加载应用程序时,列表"周"包含对象,但在html视图中可以看到文本。

我认为$scope。taskList在列表"week"之前加载。

例如,当我使用:

$scope.initWeek = function() {
    getTaskFromServer();
    alert(week[0].lenght);
};
$scope.taskList = week[currentlySelectedDay-1];

站点显示警报,当我点击Ok时,taskList中的文本是一个网站。

由于它是异步操作,您必须在ajax回调中设置taskList:

function getTaskFromServer() {
    $.ajax({
        type : "POST",
        url : "main_page",
        success : function(data) {
            var taskList = $.parseJSON(data);
            week[0].push(taskList[0]);
            $scope.taskList = week[currentlySelectedDay-1];
        },
    }); 
}

如果你能用$http代替jquery ajax调用,那就更好了。

希望对你有帮助。

最新更新