我希望能够对其ArrayController内容来自余烬数据查询进行排序.不幸的是,sortPropertymixin在这种情况下似乎不起作用.
我希望能够做到以下几点:
App = Ember.Application.create();
App.store = DS.Store.create({ revision: 4});
App.Item = DS.Model.extend({
id: DS.attr('string'),
name: DS.attr('string')
});
App.store.createRecord(App.Item, {id: '4', name: 'banana' });
App.store.createRecord(App.Item, {id: '2', name: 'apple'});
App.store.createRecord(App.Item, {id: '6', name: 'spaghetti'});
App.ItemsController = Ember.ArrayController.create({
content: App.store.findAll(App.Item),
sortProperties: ['name']
});
Run Code Online (Sandbox Code Playgroud)
使用最新版本的EmberEmber-data,这给出了输出:
[ id: 4, name: banana ]
[ id: 2, name: apple ]
[ id: 6, name: spaghetti ]
Run Code Online (Sandbox Code Playgroud)
这里的问题是App.store.findAll()返回一个RecordArray内容属性不仅仅是一个App.Item实例数组(在这种情况下,内容是[2,3,4])
为了实际掌握实例,我需要使用类似的东西objectAt().但即使我从中提取App.Item实例RecordArray …
<script type="text/x-handlebars" data-template-name="patient">
<ul class="nav">
{{#each menuItem in menuItems}}
<li>{{#linkTo "dashboard.summary" menuItem}}{{menuItem.name}}{{/linkTo}}</li>
{{/each}}
</ul>
{{outlet}}
</script>
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,如何创建linkTo动态链接而不是硬编码的"dashboard.summary"?例如,"dashboard."+menuItem.name.
我知道Ember-Data应该与Active Model Serializers兼容,但它们似乎与序列化has_many与嵌入式ID的关系不合时宜.
例如,序列化器
class PostSerializer < ActiveModel::Serializer
embed :ids
has_many :comments
end
Run Code Online (Sandbox Code Playgroud)
生成JSON
{
"post": {
"comment_ids": [...]
}
}
Run Code Online (Sandbox Code Playgroud)
但是Ember Data中的默认配置,
App.Post = DS.Model.extend({
DS.hasMany('App.Comment'),
});
App.Comment = DS.Model.extend();
Run Code Online (Sandbox Code Playgroud)
期望注释关联序列化为comments: [...]没有_ids后缀(请参阅Ember.js指南的REST适配器部分的关系子部分).
我尝试了以下作为解决方法:
class PostSerializer < ActiveModel::Serializer
attribute :comments
def comments
object.comment_ids
end
end
Run Code Online (Sandbox Code Playgroud)
它可以工作,但是embed :ids, :include => true为了启用侧载而添加现在什么都不做,因为AMS不知道它是一个关联.
编辑:我正在使用active_model_serializers (0.6.0)gem和Ember-Data修订版11
目前我毫无意义如何实现与余烬数据的分页.我发现,我可以返回'meta'属性作为响应,并且ember-data不会抛出错误.但我只是不知道如何访问它,也不知道这个属性的目的是什么.
互联网上的几个例子假设我已将整个集合加载到ember中,或者他们做了一些小技巧并进行无限滚动,这不需要有关页数的信息.
我认为加载所有记录都可以,如果我有<1k,但有时我会处理大量数据(比方说apache日志).然后怎样呢?
所以基本上我就是想用ember和ember-data来构建我的第一个真实应用程序,但我认为这不是一个好主意.
好的,所以任何人都知道如何解决这个基本但复杂的问题?:)
我有一个使用ember-rails gem与rails应用程序交互的ember应用程序.
我想使用localStorage适配器来存储从服务器通过其余api下载产品的列表.
然后,如果应用程序处于脱机状态,则ember可以使用localStorage数据,而不是向rails app询问数据.
有没有办法做到这一点?
我们正在开发一个消息传递系统,允许用户向许多社交媒体帐户提交消息,这将导致每个帐户发布一个帖子.在我们的应用程序中,我们有帐户,消息和帖子.消息是我的内容的单个实例,然后可以作为帖子发送.
帐户可以包含许多消息.
消息可以绑定到许多帐户.消息可以有很多帖子.
帖子属于消息.
我们对数据建模如下:
Social.Account = DS.Model.extend({
username: DS.attr('string'),
messages: DS.hasMany('Social.Message')
});
Social.Message = DS.Model.extend({
user_id: DS.attr('number'),
text: DS.attr('string'),
accounts: DS.hasMany('Social.Account'),
posts: DS.hasMany('Social.Post')
});
Social.Post = DS.Model.extend({
created: DS.attr('date'),
text: DS.attr('string'),
message: DS.belongsTo('Social.Message')
});
Run Code Online (Sandbox Code Playgroud)
和FIXTURE数据看起来像这样:
Social.Account.FIXTURES = [{
id: 1,
username: "commadelimited",
messages: [1, 2]
}];
Social.Message.FIXTURES = [{
id: 1,
user_id: 1,
text: 'This is message #1 sent by account #1',
accounts: [1],
posts: [1]
}, {
id: 2,
user_id: 1,
text: 'This is message #2 sent by …Run Code Online (Sandbox Code Playgroud) 所以,在Xcode 7中,当我在手机上构建应用程序时,我遇到了这个错误:
Xcode has encountered an unexpected error: (0x01c) No space left on device, at ‘/Library/Caches/com.apple.xbs/Sources/DVTiOSFrameworks/DVTiOSFrameworks-8167/DTDeviceKitBase/DTDeviceKitBase_Utilities.m:1151’
Run Code Online (Sandbox Code Playgroud)
有什么建议?