我正在尝试将HTTP.get
我的Angular 函数转换controllers.js
为服务services.js
.
我发现的例子都有相互冲突的方式来实现服务,他们选择的名称令人困惑.此外,服务的实际角度文档使用的语法与所有示例的语法不同.我知道这很简单,但请帮帮我.
我有app.js
,controllers.js
,services.js
,filters.js
.
app.js
angular.module('MyApp', []).
config(['$routeProvider', function($routeProvider)
{
$routeProvider.
when('/bookslist', {templateUrl: 'partials/bookslist.html', controller: BooksListCtrl}).
otherwise({redirectTo: '/bookslist'});
}
]);
Run Code Online (Sandbox Code Playgroud)
controllers.js
function BooksListCtrl($scope,$http) {
$http.get('books.php?action=query').success(function(data) {
$scope.books = data;
});
$scope.orderProp = 'author';
}
Run Code Online (Sandbox Code Playgroud) 我已经阅读了这个问题以及简单明了的答案,但它在我的案例中没用,因为答案不考虑嵌套for
.请看,代码:
class SuperCat(ndb.Model):
class Category(ndb.Model):
supercat = ndb.KeyProperty(kind=SuperCat)
class SubCat(ndb.Model):
category = ndb.KeyProperty(kind=Category)
Run Code Online (Sandbox Code Playgroud)
处理:
Categories = ndb.gql("SELECT * FROM Category WHERE supercat = :1", supercat_key)
self.generate('supercat.html', {'Categories': Categories})
Run Code Online (Sandbox Code Playgroud)
在模板中,使用旧的db.Model和back-reference属性就足够了:
{{ for Category in Categories }}
{{ for SubCat in Category.subcat_set }} # this is the back-reference in action
Run Code Online (Sandbox Code Playgroud)
提供此类数据结构的同样简单的替代方法是什么?
假设我有这个代码:
class A(ndb.Model):
prop = ndb.StringProperty(verbose_name="Something")
m = A()
m.prop = "a string value"
Run Code Online (Sandbox Code Playgroud)
当然,如果我打印m.prop,它将输出"一个字符串值",而实际上它是一个StringProperty实例.因此无法以"正常"方式访问verbose_name,即m.prop._verbose_name
.
我阅读了代码并找到了一种方法来访问它:m._properties["prop"]._verbose_name
它可以工作,但它看起来很hacky o_o.
那么告诉我,还有另一种方法吗?
注意:我说的是NDB API,而不是旧的
python google-app-engine app-engine-ndb google-cloud-datastore
也许这是错的,但我总是对我的应用使用此查询:
cme_only = Comput.all().filter('__key__ =', cid.key())
Run Code Online (Sandbox Code Playgroud)
这个NDB查询的兼容版本是什么?元数据查询非常不同..
编辑:cid是一个实体,cme_only是一个可迭代的,我肯定只有一个值
cid = Comput.get_by_id(int(self.request.get('id')))
cme_only = Comput.all().filter('__key__ =', cid.key())
Run Code Online (Sandbox Code Playgroud)
然后在模板中:
{{ for Comput in cme_only }}
Run Code Online (Sandbox Code Playgroud)
我不喜欢它,但它已经足够了
我曾经使用get_by_id从数据存储中获取实体,从不使用祖先路径.但我的模型的复杂性使它成为必要.事实上,Ancestor Paths解决了一个大问题,但现在当我尝试get_by_id
实体返回时,None
如果实体具有父键.这意味着我需要添加父键:
entity = MyModel.get_by_id(id)
Run Code Online (Sandbox Code Playgroud)
这会变成:
entity = MyModel.get_by_id(id, parent=key)
Run Code Online (Sandbox Code Playgroud)
如何构建父键?
编辑:
此时我更喜欢留下祖先路径并添加另一个keyproperty.
下一步:gae/py app的ajax前端.
我的应用程序只有基本的html版本,可以与数据存储区交互并每次更新页面.没关系,但现在需要ajax.我尝试了一些解决方案:基本的javascript,jquery的ajax API和一些框架.
我想我在knockoutjs中找到了我想要的东西,但是这个框架通过json格式与服务器交互.这意味着我需要学习json库并重写所有处理程序,以便在json中获取和发布.我可以开始这个任务,但在我想了解更多关于ProtoRPC API之前.
文档说这个API对于"创建结构化的Ajax后端"也很有用,如果我理解的话,响应中的消息是json格式的.我的问题是:
ProtoRPC API消息确实使用json?
所有请求/响应都通过ProtoRPC会出现问题吗?
实现服务器端固态ProtoRPC服务并使用框架进行客户端是一个很好的策略?