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

时间:2014-08-11 12:38:36

标签: angularjs

我的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];

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

我认为$ scope.taskList是在列表“week”之前加载的。

例如,当我使用:

$scope.initWeek = function() {

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

网站显示提醒,当我点击“确定”时,来自taskList的文本就是一个网站。

1 个答案:

答案 0 :(得分:1)

由于它是异步操作,因此必须在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调用,那会更好。

希望有所帮助。