Javascript 如何使用AngularJS控制器从Google App Engine而不仅仅是json文件获取数据
我是web开发新手,正在尝试获取已插入到Google App Engine数据存储中的数据,并使用AngularJS有选择地将其发布到页面上。我能够使用JSON文件,并且可以使用内联javascript在html文件上发布我的应用程序引擎数据库的内容,但我希望使用AngularJS。我试图遵循上列出的提示,但它似乎缺少信息,并且没有解释应该在何处添加“gapi.client.guestbook.messages.insert(message.execute();”。我使用objectify对api进行注释,并使用java编写新的实体和api 例如,下面的代码在我的程序中引用了一个json文件,效果很好Javascript 如何使用AngularJS控制器从Google App Engine而不仅仅是json文件获取数据,javascript,json,angularjs,google-app-engine,google-cloud-endpoints,Javascript,Json,Angularjs,Google App Engine,Google Cloud Endpoints,我是web开发新手,正在尝试获取已插入到Google App Engine数据存储中的数据,并使用AngularJS有选择地将其发布到页面上。我能够使用JSON文件,并且可以使用内联javascript在html文件上发布我的应用程序引擎数据库的内容,但我希望使用AngularJS。我试图遵循上列出的提示,但它似乎缺少信息,并且没有解释应该在何处添加“gapi.client.guestbook.messages.insert(message.execute();”。我使用objectify对ap
listingControllers.controller('ViewItemsCtrl', [
'$scope',
'$routeParams',
'$http',
function($scope, $routeParams, $http) {
$http.get('phones/' + $routeParams.phoneId + '.json').success(
function(data) {
$scope.phone = data;
$scope.mainImageUrl = data.images[0];
});
$scope.setImage = function(imageUrl) {
$scope.mainImageUrl = imageUrl;
}
$('.dropdown-toggle').dropdown();
} ]);
但当我试图制作一个控制器来引用Google数据存储时,我不知道该怎么做。根据我的研究,我最好的猜测如下,但它显然没有连接到数据库。如果在没有Angular的情况下对应用程序引擎执行简单的get或insert调用,我首先调用函数init(),该函数加载gapi并调用getListings和insertListings。我需要在控制器中执行此操作吗?这是我的代码,部分基于
以下代码用于内联javascript,我可以使用它从数据存储中获取和插入数据。我成功地使用它上传了新数据,但我似乎不知道如何在新页面上使用插入的数据。谢谢你,请让我知道你是否知道如何做到这一点,或者可以详细介绍谷歌网页应用程序页面上的介绍
<script type="text/javascript">
function init() {
//Parameters are APIName,APIVersion,CallBack function,API Root
gapi.client.load('listingserviceapi', 'v1', null, 'https://molt-team-233.appspot.com/_ah/api');
document.getElementById('getListings').onclick = function() {
getListings();
}
document.getElementById('insertListing').onclick = function() {
insertListing();
}
}
//List Quotes function that will execute the list call
function getListings() {
gapi.client.listingserviceapi.getListings().execute(function(resp) {
if (!resp.code) {
resp.items = resp.items || [];
var result = "";
for (var i=0;i<resp.items.length;i++) {
result = result+ resp.items[i].title + "..." + "<b>" + resp.items[i].description + "</b>" + "[" + resp.items[i].price + "]" + "<br/>";
}
document.getElementById('getListingsResult').innerHTML = result;
}
});
}
//Insert function
function insertListing() {
//Validate the entries
var _title = document.getElementById('title').value;
var _price = document.getElementById('price').value;
//Build the Request Object
var requestData = {};
requestData.title = _title;
requestData.price = _price;
gapi.client.listingserviceapi.insertListing(requestData).execute(function(resp) {
if (!resp.code) {
//Just logging to console now, you can do your check here/display message
console.log(resp.id + ":" + resp.author + ":" + resp.message);
}
});
}
</script>
<script src="https://apis.google.com/js/client.js?onload=init"></script>
函数init(){
//参数为APIName、APIVersion、回调函数、API根
load('listingserviceapi','v1',null,'https://molt-team-233.appspot.com/_ah/api');
document.getElementById('getListings')。onclick=function(){
getListings();
}
document.getElementById('insertListing')。onclick=function(){
insertListing();
}
}
//List Quotes函数将执行List调用
函数getListings(){
gapi.client.listingserviceapi.getListings().execute(函数(resp){
如果(!响应代码){
resp.items=resp.items | |[];
var结果=”;
对于(var i=0;i从Angular代码的角度来看,数据来自JSON还是数据存储没有区别。区别在于服务器端代码:您需要在GAE应用程序中编写一个方法来响应请求、查询数据存储、构建JSON blob并返回它
您正在参考的教程试图通过使用GAE Cloud Endpoints来抽象其中的一些内容。但这仍然需要在服务器端进行大量的设置,如果您只想返回一些JSON,那么这并不是必须的。谢谢。有没有一种方法可以编写类似于上面的getListings方法但使用JSON的方法格式,而不是“结果+响应项[i]。标题…”?如何创建一个临时用于获取所需数据的json blob?您知道有哪些教程或文章可以帮助我做到这一点吗?但是getListings
是一个客户端函数。在GAE应用程序的服务器端,您需要一些东西,将数据创建为json并在响应客户端调用时返回:你没有说你在服务器上使用什么语言,但在Python中你可以做json.dumps(无论什么)
,毫无疑问Java/Go/PHP也有类似的功能。谢谢。我正在使用Java,发现我可以使用json simple来做与json.dumps(x)等价的事情。我对应该在何处添加java代码以及如何调用它感到有点困惑。我应该将其包含在我的listingServiceAPI中吗?如果json是一个方法而不是json文档的结果,那么我如何通过控制器访问json?我还看到有人在下面的链接中讨论另一个方法,我很好奇是否有任何优势通过GAE创建json。事实证明我正在这样做,但只需要修复我使用angular访问json的方式。谢谢
<script type="text/javascript">
function init() {
//Parameters are APIName,APIVersion,CallBack function,API Root
gapi.client.load('listingserviceapi', 'v1', null, 'https://molt-team-233.appspot.com/_ah/api');
document.getElementById('getListings').onclick = function() {
getListings();
}
document.getElementById('insertListing').onclick = function() {
insertListing();
}
}
//List Quotes function that will execute the list call
function getListings() {
gapi.client.listingserviceapi.getListings().execute(function(resp) {
if (!resp.code) {
resp.items = resp.items || [];
var result = "";
for (var i=0;i<resp.items.length;i++) {
result = result+ resp.items[i].title + "..." + "<b>" + resp.items[i].description + "</b>" + "[" + resp.items[i].price + "]" + "<br/>";
}
document.getElementById('getListingsResult').innerHTML = result;
}
});
}
//Insert function
function insertListing() {
//Validate the entries
var _title = document.getElementById('title').value;
var _price = document.getElementById('price').value;
//Build the Request Object
var requestData = {};
requestData.title = _title;
requestData.price = _price;
gapi.client.listingserviceapi.insertListing(requestData).execute(function(resp) {
if (!resp.code) {
//Just logging to console now, you can do your check here/display message
console.log(resp.id + ":" + resp.author + ":" + resp.message);
}
});
}
</script>
<script src="https://apis.google.com/js/client.js?onload=init"></script>