2013-11-14 3 views
0

Я пытаюсь получить данные из базы данных parse.com с помощью Angularjs. Я ожидаю хотя бы консольный журнал, который вы можете увидеть в приведенном ниже коде, чтобы что-то вернуть, но ничего не возвращает, и в консоли нет ошибок.

Вот код я пытаюсь: кода Full 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

Смежные вопросы