标签: ember-data

使用ember-data RESTAdapter返回分页数据的正确模式?

我正在页面中显示使用Ember Data RESTAdapter获取的文章列表.我需要实现一个bootstrap'esque paginator(参见:http://twitter.github.com/bootstrap/components.html#pagination),并且似乎无法找到一个合理的模式来返回分页数据,如页数,文章数,当前页面,在单个请求中.

例如,我希望API返回类似于:

{
  articles: [{...}, {...}],
  page: 3,
  article_count: 4525,
  per_page: 20
}
Run Code Online (Sandbox Code Playgroud)

一个想法是添加App.Paginator DS.Model,因此响应可能如下所示:

{
  articles: [{...}, {...}],
  paginator: {
    page: 3,
    article_count: 4525,
    per_page: 20
  }
}
Run Code Online (Sandbox Code Playgroud)

但是这对于一些如此微不足道的东西来说,这似乎有些过分.有没有人解决过这个问题或者找到了他们喜欢的特定模式?是否有一种简单的方法来管理RESTAdapter映射以解决此类情况?

pagination ember.js ember-data

14
推荐指数
1
解决办法
3450
查看次数

Ember模型在间隔中重新加载

我有一个User模型,它具有纬度和经度属性,用于显示地图上的当前用户位置.

App.User = DS.Model.extend({
    firstName: DS.attr('string'),
    lastName: DS.attr('string'),
    email: DS.attr('string'),
    jobs: DS.hasMany("App.Job"),
    latitude:   DS.attr('number'),
    longitude: DS.attr('number'),
    measuredAt: DS.attr('date'),
});
Run Code Online (Sandbox Code Playgroud)

每隔给定间隔从服务器自动更新纬度和经度属性的最佳方法是什么?ember-data是否支持这种用例?我找不到具有此功能的任何样品.我想我需要在其中使用setInterval覆盖User类的find方法,这是正确的方法吗?

谢谢

ember.js ember-data

14
推荐指数
3
解决办法
9430
查看次数

实例初始化单元测试失败,"存储未定义"

生成示例应用程序后:

ember new preloadtest
cd preloadtest/
ember g instance-initializer preload
ember g model test-data
ember g route index
ember g adapter application
Run Code Online (Sandbox Code Playgroud)

使用以下文件:

型号/测试data.js

import DS from 'ember-data';

export default DS.Model.extend({
  name: DS.attr('string'),
  value: DS.attr( 'number' )
});
Run Code Online (Sandbox Code Playgroud)

路线/ index.js

import Ember from 'ember';

export default Ember.Route.extend({
  model(){
    return this.store.peekAll( 'test-data' );
  }
});
Run Code Online (Sandbox Code Playgroud)

实例的初始化/ preload.js

export function initialize( appInstance ) {
  let store = appInstance.lookup( 'service:store' );
  store.pushPayload( { "testDatas": [
    { "id": 1, "name": "aaa", "value": 1},
    { …
Run Code Online (Sandbox Code Playgroud)

ember.js ember-data ember-testing

14
推荐指数
1
解决办法
1360
查看次数

Ember数据多态关联

有没有人想出多态关联和余烬数据的答案?

我们需要一些能够从我所知道的方式查询关系另一端的类型的方法.

有人对此有何看法?

ember.js ember-data

13
推荐指数
2
解决办法
4466
查看次数

deleteRecord后列表未更新

我有一个ArrayController,其内容在这样的路由中定义:

App.UsersRoute = Ember.Route.extend({
  model: function() {
    return App.User.find();
  },

  setupController: function(controller, model) {
    this._super(controller, model);
    this.controllerFor('application').set('currentRoute', 'users');
  }
});
Run Code Online (Sandbox Code Playgroud)

我在模板中列出数据:

<ul>
  {{#each user in arrangedContent}}
  <li>
    {{user.lastName}} {{user.firstName}}
    {{#linkTo "users.edit" user class="btn btn-primary btn-small"}}EDIT{{/linkTo}}
  </li>
  {{/each}}
</ul>
Run Code Online (Sandbox Code Playgroud)

它工作正常.

如果我创建一个新项目,它会自动添加到模板中的列表中:

App.UsersNewRoute = Ember.Route.extend({
  model: function() {
    return App.User.createRecord({firstName: '', lastName: ''});
  }
});
Run Code Online (Sandbox Code Playgroud)

但是当我在"编辑"视图中删除某个项目时,它不起作用:

App.UsersEditController = Ember.ObjectController.extend({
  ...

  destroy: function() {
    this.get('content').deleteRecord();
    this.get('store').commit();
    this.transitionToRoute("users.index");
  }
});
Run Code Online (Sandbox Code Playgroud)

但是在"新"视图中,如果我删除了新创建的项目,它就可以工作(没有提交).

在编辑控制器中,如果我删除"提交",则列表会更新,但当我执行其他操作时,将重新加载列表,并重新显示已删除的项目(正常).

那么,如何删除项目?

注意:我使用ember和ember-data的"master"代码,刚刚刷新.

ember.js ember-data

13
推荐指数
1
解决办法
5183
查看次数

没有Ember Data的Ember

Ember数据仍未达到版本1.0,因此我决定使用Ember而不使用Data模型.

我有自己的模型,这些模型由路径模型函数创建.

但是,保持前端对象和后端对象之间的状态是一场噩梦.特别是当一条路线使用其他路线模型时.

  • 如果我自己创建商店和模型查找方法,怎么能实现呢?
  • 我应该使用Ember Data(即使它不是1.0版本吗?)也许是Ember Data 1.0上的ETA?
  • 每当我更改模型时,编写代码来更新前端的模型?
  • 另一种方法?

我正在做最好的做法,还是我应该采取不同的做法?我的直觉是,如果不使用Ember Data,我应该写自己的商店.我很乐意收到你们中的一些人的反馈.

模型示例:

App.Person = Ember.Object.extend(App.Serializable,Em.Copyable,{
  user_email : null //used in routing dynamic segements and as old email when making changes to email
  ,first_name: null
  , last_name: null
  , fullname : function () {
    return this.first_name + ' ' + this.last_name;
  }.property('first_name','last_name').cacheable()
};

App.Person.reopenClass({
  createRecord: function(data) {
    return App.Person.create({
      user_email : data.email
      , first_name: data.first_name
      , last_name : data.last_name
}});
Run Code Online (Sandbox Code Playgroud)

我如何加载类模型的示例:

App.UsersRoute = App.AuthenticatedRoute.extend( {
  model : function () { …
Run Code Online (Sandbox Code Playgroud)

javascript model-view-controller ember.js ember-data

13
推荐指数
1
解决办法
3003
查看次数

Ember Data属于选择下拉视图

我试图用Ember和Ember Data做一些非常基本的事情.

1)帖子属于用户; 用户有很多帖子

2)在创建新的Post表单中,我想要选择/下拉所有用户

3)当我编辑帖子(使用相同的表单)时,我想将其正确绑定回dropbox

问题:执行与用户列表绑定的下拉列表的最佳做法是什么?如何绑定编辑表单以再次填充下拉列表?

用户模型:

App.User = DS.Model.extend({
  posts: DS.hasMany('post', {async: true}),
});
Run Code Online (Sandbox Code Playgroud)

邮政模式:

App.Post = DS.Model.extend(Ember.Validations.Mixin, {
  user: DS.belongsTo('user', {async: true}),
});
Run Code Online (Sandbox Code Playgroud)

创建新的职位表格:

{{view Em.Select
  content=users <<<<< How do I bind this.store.find("user") here?
  optionValuePath='content.id'
  optionLabelPath='content.name'
}}
Run Code Online (Sandbox Code Playgroud)

我不明白将选择内容与用户绑定的最佳做法.

尝试1:

*我使用的是Ember-Form

  {{em-select
    property="user_id"
    label="user"
    prompt="Select user:"
    content=controllers.users.content
    optionValuePath="content.id"
    optionLabelPath="content.first_name"
  }}
Run Code Online (Sandbox Code Playgroud)

在保存操作上:

newItem.set('user', this.store.getById('user', this.get('user_id')));
Run Code Online (Sandbox Code Playgroud)

我尝试使用user_id作为表单的属性,并在保存时转换回用户对象以分配给帖子.但是,这种方法有点愚蠢,因为我每次保存时都会主动将user_id转换为用户对象.我觉得应该有一种方法可以自动完成,如果我做了正确的绑定,而不是跳过箍来绑定属性user_id.当我使用相同的表单编辑帖子时,这也使我很难绑定回来.由于已经建立了所有的关系,我觉得我在这里做错了.我认为必须有更好的方法.

谢谢!

ember.js ember-data

13
推荐指数
2
解决办法
3145
查看次数

如何在ember cli生成的模型中设置rest适配器

我试图让我的余烬模型使用远程rails api.我试过扩展DS.RESTAdapter,但我不知道如何告诉模型使用这些设置.我的模型永远不会到达localhost:3000.

    //app.js
    import Ember from 'ember';
    import Resolver from 'ember/resolver';
    import loadInitializers from 'ember/load-initializers';

    Ember.MODEL_FACTORY_INJECTIONS = true;

    var App = Ember.Application.extend({
      modulePrefix: 'friend-ember-app', // TODO: loaded via config
      Resolver: Resolver
    });
    App.ApplicationAdapter = DS.RESTAdapter.extend({
        host: 'localhost:3000',
        namespace: 'api/v1'
    });

    loadInitializers(App, 'friend-ember-app');

    export default App;
Run Code Online (Sandbox Code Playgroud)

//

    //models/event.js
    import DS from 'ember-data';

    export default DS.Model.extend({
        title: DS.attr('string'),
        description: DS.attr('string')
    });
Run Code Online (Sandbox Code Playgroud)

//

    // controllers/index.js 
    import Ember from 'ember';

    export default Ember.Controller.extend({
        columns: function(){
            //Attempting to see request to remote api
            var events …
Run Code Online (Sandbox Code Playgroud)

ember.js ember-data ember-cli

13
推荐指数
1
解决办法
7286
查看次数

覆盖DS.Store ember-cli

我有一些需要运行的代码store.init.

我尝试扩展默认存储app/store.js,ember-cli似乎把它当作商店,但是对象this.store不是商店

我的店铺定义:

import DS from 'ember-data';

export default DS.Store.extend({
  init:function(){
    console.log('watatLoL')
  }
});
Run Code Online (Sandbox Code Playgroud)

ember.js ember-data ember-cli

13
推荐指数
2
解决办法
2571
查看次数

弃用:如果至少有一个,则在Ember Data 2.0中,shouldReloadAll的默认行为将更改为始终返回false

在这个问题的那一刻,我正在运行最新的Ember和Ember Data版本.

在此输入图像描述

我正在使用DS.RESTAdapter调用/places这种方式:

this.store.findAll('place');
Run Code Online (Sandbox Code Playgroud)

该模型只有一个名称属性name: DS.attr('string') JSON如下:

{
  places: [
    {
      id: 1,
      name: "San Francisco"
    },
    {
      id: 2,
      name: "Havana"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

我制作了模板并使用了相应的each,所有内容都显示出来并且到目前为止工作但是我得到了一个弃用警告,告诉我们:

弃用:当存储中至少有一个"目标"记录时,shouldReloadAll的默认行为将在Ember Data 2.0中更改为始终返回false.如果您想保留当前行为,请覆盖适配器中的shouldReloadAll:application并返回true.

我不确切知道什么是解决此警告的最佳方法.我是新来的,所以任何进一步的解释都没问题.提前致谢.

ember.js ember-data

13
推荐指数
3
解决办法
2201
查看次数