Я заметил, что AngularJS требует результатов в javascript с внешнего сервера.AngularJS Callbacks on Rails
Текущий сервер в этом примере возвращает angular.callbacks._0({"key": "value"});
с заголовками javascript. Как сделать возврат в том же формате в Rails? Благодаря!
AngularJS генерирует http://echo.jsontest.com/key/value?callback=angular.callbacks._0
ссылку из этого запроса по умолчанию
Вот мой рабочий пример:
<!DOCTYPE html>
<html ng-app="Simple">
<body>
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular-resource.min.js"></script>
<div ng-controller="SimpleController">
{{some_item.key}}
</div>
<script>
angular.module('Simple', ['ngResource']);
function SimpleController($scope, $resource) {
$scope.simple = $resource('http://echo.jsontest.com/key/value',
{callback:'JSON_CALLBACK'},
{get:{method:'JSONP'}}
);
$scope.some_item = $scope.simple.get();
console.log($scope.some_item.key);
}
</script>
</body>
</html>
но JSONP требует обратного вызова функции JavaScript? – Gediminas
Вам не нужно использовать JSONP, Угловой $ ресурс ожидает простой JSON. Пока ваш контроллер реагирует на индекс, покажет, создаст, уничтожит и обновит (или подмножество, которое вам нужно), вы можете использовать $ resource, как в вашем примере. Посмотрите на документацию Angular для [$ resource] (http://docs.angularjs.org/api/ngResource.$resource), особенно на примерах. В общем, если вы создаете эшафот в рельсах, он должен работать из коробки с угловым. Кроме того, в вашем примере я бы ожидал '$ scope.some_item = $ scope.simple.get();' принимать аргумент (он будет маршрутизирован для отображения в вашем контроллере). – taglia