2013-11-14 81 views
0

我正在嘗試從Angularjs的parse.com後端獲取其他數據。我期望至少在下面的代碼中可以看到控制檯日誌以返回一些內容,但它不會返回任何內容,並且控制檯中沒有錯誤。

這裏是代碼我試圖: 完整的Javascript代碼:

var todoApp = angular.module('todoApp', ['ngResource']); 


todoApp.factory('todoFactory', function($resource) { 
    return $resource('https://api.parse.com/1/classes/Professional', {}, { 
     method: 'GET', 
     headers: { 'X-Parse-Application-Id':'xxx', 'X-Parse-REST-API-Key':'yyy'} 
    }); 
}); 

function TodoController($scope, $location, todoFactory) { 
    function loadTodos() { 
     $scope.items = todoFactory.query(); 
     console.log(todoFactory.query()); //i expect this to log something at least 
    } 

} 

完整的HTML代碼:

<!DOCTYPE html> 
<html ng-app="todoApp"> 
<head> 
    <title></title> 
</head> 
<body> 

<div ng-controller="TodoController"> 
    <ul> 
     <li ng-repeat="item in items"> {{item.firstName}} </li> 
    </ul> 
</div> 

<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular.min.js"></script> 
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular-resource.min.js"></script> 

如何給生活這個死代碼的任何線索?

+0

你實際調用在'loadTodos'功能你的控制器? – Beterraba

+0

是的,當我打電話與例如: 仍然沒有任何反應。 – Benj

+1

這種方式不起作用,因爲你的函數沒有在$ scope處定義。嘗試將函數更改爲'$ scope.loadTodos = function(){/ * ... * /}'。 – Beterraba

回答

1

問題是你沒有調用你的函數。

你有兩個選擇:

在你的控制器:

function TodoController($scope, $location, todoFactory) { 
    function loadTodos() { 
     $scope.items = todoFactory.query(); 
     console.log(todoFactory.query()); 
    } 
    // You declare the function, now you can use this 
    loadTodos(); 
} 

但是,這樣一來,功能不提供你的看法,因爲它不是在$scope聲明。爲此,應聲明是這樣的:

function TodoController($scope, $location, todoFactory) { 
    $scope.loadTodos = function() { 
     $scope.items = todoFactory.query(); 
     console.log(todoFactory.query()); 
    } 
} 

您在$範圍內聲明的功能,現在你可以在這樣的視圖中使用:

<button type="button" ng-click="loadTodos()">Get Items</button> 
+0

我非常感謝。我遇到了上述示例中未正確發送標題的問題,但我設法解決了這個問題。 – Benj