2015-10-19 61 views
0

從工廠返回數據後,我試圖用$ scope.dummyTask賦值。分配後,我可以在回調函數內的控制檯中顯示這些內容。但在功能塊的外面,$ scope.dummyTask未定義,但爲什麼?爲什麼返回後數據不可訪問出廠數據

$scope.dummyTasks=[];  
$scope.getTask=function(){ 
Task.query(function(data){ 
$scope.dummyTasks=data; 
console.log(angular.toJson($scope.dummyTasks));//shows desired data 
}); 
}; 

$scope.getTask(); 
console.log(angular.toJson($scope.dummyTasks));// shows undefined 
+0

什麼樣的對象是從查詢返回時的'data'?它真的是一個數組嗎? –

+0

JSON格式化數據 [{「id」:1,「task」:「Break Fast」,「task_at」:「2015-10-10 10:20:20」,「user_id」:1,「created_at」:「 -0001-11-30 00:00:00「,」updated_at「:」2015-10-10 08:44:33「,」status「:」完成「,」鬧鐘「:」0「},{」id 「:8,」task「:」與Poly約會「,」task_at「:」2015-10-19 10:10:00「,」user_id「:1,」created_at「:」2015-10-09 20:40 :23「,」updated_at「:」2015-10-19 05:56:05「,」status「:」完成「,」鬧鐘「:」1「},{」id「:9,」task「:」在地上踢足球「,」task_at「:」2015-10-21 17:05:00「,」user_id「:1,」created_at「:」2015-10-09 20:47:07「,」updated_at「 :「2015-10-09 20:47:07」,「status」:「pending」,「alarm」:「1」}] –

+0

所以你需要做:'$ scope.dummTasks = angular.fromJson(data) '反序列化JSON。 –

回答

0

它顯示了不確定,因爲Task.query()作出了異步查詢。

它最有可能發送一個http請求,並且只有當響應可用時,調用回調函數,並初始化$scope.dummyTasks

// T0. send a query 
Task.query(function(data) { 

    // T2 (long after T1). initialize dummyTasks from the asynchronous response 
    $scope.dummyTasks = data; 
    console.log(angular.toJson($scope.dummyTasks));//shows desired data 

}); 

// T1 (immediately after T0). display $scope.dummyTasks 
console.log(angular.toJson($scope.dummyTasks));// shows undefined 
+0

這也是我的第一個想法。但是當他初始化'$ scope.dummyTasks = [];'後,爲什麼立即'undefined'? –

+0

我的猜測是它沒有顯示未定義。或者是,並且OP試圖通過用空數組初始化變量來修復它。 –

+0

非常感謝@JB Nizet。請告訴我,我怎麼能過來這種情況? $ q.deffer()可以幫助我解決這個問題嗎?還是其他的東西? –

相關問題