嗨,非常感谢你的帮助, 我面临一个小问题,我在网上找不到很多例子或帮助:在PersistenceJS中多次加载关系,以便在同一个Angular View上显示它们。
为了更清楚,我有这种对象和关系:
所以我定义了对象之间的关系:
我的商店对象
entities.Store = persistence.define('Store', { ... });
//Relations
entities.Store.hasMany('articles', entities.Article, 'store');
我的文章对象
entities.Article = persistence.define('Article', { ... });
//Relations
entities.Article.hasMany('images', entities.Image, 'article');
我的图片对象
entities.Image = persistence.define('Image', { ... });
My Angular View只是一个包含项目和图像的商店列表,使用ng-repeat:
<div ng-repeat="store in stores">
<h1>{{store.name}}</h1>
<div ng-repeat="article in store.articles">
<h2>{{article.name}}</h2>
<div ng-repeat="image in article.images">
<img src="{{image.link}}" />
</div>
</div>
</div>
我的控制器方法调用服务来加载数据库中的所有内容:
dataService.getStoresData().then(function(stores) {
$scope.stores = stores;
});
我的服务正在加载,这就是我被困的地方,我尝试了很多东西,这是我的最后一个版本:
getStoresData: function () {
var deffered = $q.defer();
var query = entities.Store.all();
query.list(null, function (stores) {
deffered.resolve(stores); //As soon as possible ?
for (var i = 0; i < stores.length; i++) {
//For each store, load the articles
var storeData = stores[i];
storeData.articles.list(null, function (articles) {
storeData.articlesData = articles;
for (var j = 0; j < storeData.articlesData.length; j++) {
//For each article, load the images
var articleData = storeData.articlesData[j];
articleData.images.list(null, function (images) {
articleData.imagesData = images;
});
}
})
}
})
return deffered.promise;
},
在我的第一个版本中,问题是我的关系不会显示,因为,首先,它们尚未加载,然后它们不是简单的数组,但它们是 QueryCollection 。 然后我改变了上面的服务,我改变了我的视图以反映更改(store.articlesData和article.imagesData),但它还没有工作。
我做了一个尽可能简单的codePen来重现问题:http://codepen.io/anon/pen/eJdrPo。希望它可以帮助使事情更清楚:)
有没有办法让这个工作或我需要改变我的数据库结构? 有没有办法更有效地加载所有对象及其关系?
非常感谢你的帮助,
度过愉快的一天,
Gerfaut