标签: ember-data

Ember Data填充记录

需要帮助Ember-Data与Zend Rest合作.

起初,我熟悉Zend Framework,因此Rest Adapter很容易设置.telnet的请求显示它有效,响应也有格式良好的HTTP代码.

使用Ember Data的设置稍微复杂一些.我安装了一个带Ubuntu的虚拟机,安装了Ruby 1.9.3,git clone编写了ember-data存储库并用rake生成了JS文件.我还安装了bundler来解决所有依赖项.似乎工作没有错误.这对我来说是第一次.我不熟悉红宝石.

不幸的是,它似乎没有起作用.在我的测试应用程序上,我看到了firebug的其余请求.回应看起来也不错.但对象仍然是空的.

响应:

[{"id":"1","user":"testuser","password":"123","mail":"my@me.com","role":"GUEST","active":"1","hash":null,"last_login":null}]
Run Code Online (Sandbox Code Playgroud)

响应标头:

Cache-Control       no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Connection          Keep-Alive
Content-Encoding    gzip
Content-Length      121
Content-Type        application/json; charset=utf-8
Date                Wed, 20 Jun 2012 10:49:38 GMT
Expires             Thu, 19 Nov 1981 08:52:00 GMT
Keep-Alive          timeout=15, max=99
Pragma              no-cache
Server              Apache
Vary                Accept-Encoding
X-Powered-By        PHP/5.3.13
X-UA-Compatible     IE=Edge,chrome=1
Run Code Online (Sandbox Code Playgroud)

我的应用:

    // my script
    App = Em.Application.create();

    App.store = DS.Store.create({
      revision: 4,
      adapter: DS.RESTAdapter.create({ bulkCommit: false, namespace: 'rest' })
    });

    App.User = DS.Model.extend({ …
Run Code Online (Sandbox Code Playgroud)

ember.js ember-data

2
推荐指数
1
解决办法
2160
查看次数

如何使用视图中的复选框过滤Ember.js中ArrayController的内容集合?

我正在使用Ember和Ember-Data的最新代码.我有导轨作为我的后端提供JSON,这是正常的.我希望能够使用我视图中的复选框过滤Ember模型的"active"属性.我希望复选框只显示active = true的数据,如果我勾选复选框.我不想删除数组中的数据,只是隐藏数据.这就是我目前所拥有的,但它不起作用.

模型:

App.Org = DS.Model.extend({
    code: DS.attr('string', { defaultValue: 'N/A' }),
    name: DS.attr('string', { defaultValue: 'N/A' }),
    source: DS.attr('string', { defaultValue: 'N/A' }),
    status: DS.attr('string', { defaultValue: 'N/A' }),
    type: DS.attr('string', { defaultValue: 'N/A' }),
    note: DS.attr('string', { defaultValue: 'N/A' }),
    financial_Flag: DS.attr('string', { defaultValue: 'N/A' }),
    expense_Flag: DS.attr('string', { defaultValue: 'N/A' }),
    revenue_Flag: DS.attr('string', { defaultValue: 'N/A' }),
    created_At: DS.attr('string', { defaultValue: 'N/A' }),
    updated_At: DS.attr('string', { defaultValue: 'N/A' }),

    active: function() {
        var status = this.get('status'); …
Run Code Online (Sandbox Code Playgroud)

javascript ember.js ember-data

2
推荐指数
1
解决办法
5334
查看次数

如何使用DS.Store.registerAdapter

我尝试使用ember-data的"每种类型的适配器"功能.不确定我做错了什么,或者它是否是ember-data中的错误.基本上我认为它会像这样工作:

Person = DS.Model.extend({
  name: DS.attr('string')
});
var personAdapter = DS.Adapter.create();
DS.Store.registerAdapter(Person, personAdapter );
Run Code Online (Sandbox Code Playgroud)

商店总是使用默认适配器而不是注册的'每类型适配器'我写了一个测试用例来表明我的意思:

var get = Ember.get, set = Ember.set;
var Person, store, adapter, personAdapter;

module("DS.Store and DS.Adapter 'adapter per type' integration test", {
  setup: function() {
    Person = DS.Model.extend({
      name: DS.attr('string')
  });

  adapter = DS.Adapter.create();
  personAdapter = DS.Adapter.create();

  DS.Store.registerAdapter(Person, personAdapter);
    store = DS.Store.create({ adapter: adapter });
  },

  teardown: function() {
    adapter.destroy();
    store.destroy();
  }
});


test("test function on the per type adapter", function() {

  adapter.find = function(store, type, …
Run Code Online (Sandbox Code Playgroud)

ember.js ember-data

2
推荐指数
1
解决办法
2575
查看次数

emberjs new-router-V3/controller无法使用ember-data创建或编辑记录

在这个jsfiddle中,我有EmBlog.PostsNewRouteEmBlog.PostsEditRoute.路由包含"保存,取消和销毁"的事件.

当我创建一个新记录时,它只在内存中创建并且从不调用store.commit(),并且在控制台中,它会抛出错误:

未捕获的TypeError:无法调用未定义的方法'commit'

当我尝试编辑时,它会抛出相同的错误,但编辑仍然只在内存中发生.

销毁行动也失败了.

当我打电话取消时,我得到:

无法读取undefined的属性'defaultTransaction'

大多数代码都在jsfiddle中.保存和取消事件遵循耶胡达描述的模式:

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

     events: {
         save: function(user) {
          this.get('store').commit();
         }
     }
   });
Run Code Online (Sandbox Code Playgroud)

谢谢

ember.js ember-data ember-router

2
推荐指数
1
解决办法
654
查看次数

使用hasMany关系将外键保存到其他Model

我有以下问题.

在我的应用程序中,我有一个新的屏幕Site.但是当我通过action控制器保存新站点时,languages-property不会随POST-request一起发送到服务器.

添加新站点的模板是这样的:

<form class="form-horizontal">
<div class="control-group">
    <label class="control-label" for="name">Name</label>
    <div class="controls">
        {{view Ember.TextField valueBinding="name"}}
    </div>
</div>
<div class="control-group">
    <label class="control-label" for="languages">Languages</label>
    <div class="controls">
        {{view Ember.Select contentBinding="controllers.languages" selectionBinding="languages" optionValuePath="content.id" optionLabelPath="content.description" multiple="true"}}
            </div>
</div>
<div class="form-actions">
    <button {{ action "createSite" }} class="btn btn-primary">Save</button>
</div>
Run Code Online (Sandbox Code Playgroud)

我把Store这个定义为:

App.Store = DS.Store.extend({
    revision : 12,
    adapter : DS.RESTAdapter.extend({
        namespace : 'rest'
    })
});
Run Code Online (Sandbox Code Playgroud)

这是我的控制器:

App.SitesNewController = Em.ObjectController.extend({
    needs: ['languages'],
    name: null,
    languages: null,
    createSite : …
Run Code Online (Sandbox Code Playgroud)

ember.js ember-data

2
推荐指数
1
解决办法
1528
查看次数

如何使用不同的控制器为每条记录迭代Ember中的hasMany集合

我在Ember中定义了三个模型,并且根据请求返回所有json:

App.Comment = DS.Model.extend({
    discussion: DS.belongsTo('App.Discussion')
});

App.Discussion = DS.Model.extend({
    meeting: DS.belongsTo('App.Meeting'),
    comments: DS.hasMany('App.Comment')
});

App.Meeting = DS.Model.extend({
    discussions: DS.hasMany('App.Discussion')
});
Run Code Online (Sandbox Code Playgroud)

从会议控制器中的路由会议/:id,我希望能够遍历讨论集合,为每个实例设置新的讨论控制器.然后我需要能够遍历每个讨论评论,再次做同样的事情.目前我似乎能够访问关联中定义的属性,但是如果我调用计算属性,则会返回不正确的结果(例如,当它应为5时,计数为0).我认为这个问题与控制器的上下文有关,因为我似乎无法在控制器中返回该对象的值.它可能非常简单,但我看不到它.我究竟做错了什么?

这是控制器:

App.MeetingController = Ember.ObjectController.extend({
    needs: ['discussion']
});

App.DiscussionController = Ember.ObjectController.extend({
    commentCount: function(){
        return this.get('comments.length');
    }.property('comments')
});
Run Code Online (Sandbox Code Playgroud)

然后在meeting.hbs模板中:

{{#each discussion in discussions}}
    {{ render 'discussion' discussion }}
{{/each}}
Run Code Online (Sandbox Code Playgroud)

和discussion.hbs模板一样,这个工作原理:

<div>
    {{ comments.length }}
</div>
Run Code Online (Sandbox Code Playgroud)

但这不是:

<div>
    {{ commentCount }}
</div>
Run Code Online (Sandbox Code Playgroud)

我哪里错了?

ember.js ember-data

2
推荐指数
1
解决办法
2288
查看次数

创建未附加到商店的Ember模型实例

我正在使用带有ember-data 2.0的Ember 2.0.

在Rails中,使用真实的模型实例来模拟表单和组件是很常见的.对于posts/new表单,您将传入a Post.new并在form.html.erb模板中使用它.

在Ember中,因为召唤new Post造成了破碎的模型而变得困难.相反,我们鼓励你使用商店,并使用它this.store.createRecord('post');.

这很好,但在构建隔离组件时却没有.例如,用户可以添加多个模型的表单,例如类别创建者.在我的脑海中,结构将如下所示:

category-form/template.hbs

<button {{action 'addCategory'}}>Add category</button>
{{#each categories as |category|}}
    {{input value=category.name}}
{{/each}}
<button {{action 'save'}}>Save</button>
Run Code Online (Sandbox Code Playgroud)

然后component.js将是这样的:

category-form/component.js

import Ember from 'ember';
import Category from 'app/category/model';

export default Ember.Component.extend({
    categories: [],

    actions: {
        addCategory() {
            // THIS DOES NOT WORK
            this.get("categories").pushObject(new Category);
        },

        save() {
            this.sendAction("saveCategories", this.get("categories"));
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

上面的示例确实有效,但需要this.store.createRecord.但据我所知,该组件无法访问该商店.这是理智的,因为那将是一个混乱全球国家的组成部分.此外,createRecord如果用户导航离开而不保存模型,则在使用时最终会在商店中存在大量残留模型.

我希望category-form此示例中的组件与全局状态的其余部分完全隔离.

我的问题是,如何使用ember逻辑正确处理?

javascript ember.js ember-data ember-cli ember-components

2
推荐指数
1
解决办法
2495
查看次数

Ember组件 - TypeError:存储未定义

我正在使用ember 2.3.当我尝试访问组件内的存储时,我在控制台中收到以下错误.

在此输入图像描述

这是我在component.js中尝试过的

export default Ember.Component.extend({

actions: {
  saveEmployee : function() {
      var store = this.store;

      var newEmployee = store.createRecord("employee", {
          fname: "Manu",
          lname: "Benjamin",
          email: "manu.benjamin@gmail.com",
          department: "IT Services"
      });

      newEmployee.save().then(()=> {
          console.log("Record successfully saved!!!!");
      });

  }
}
});
Run Code Online (Sandbox Code Playgroud)

我是否需要在组件中包含任何使用商店的内容?

ember.js ember-data

2
推荐指数
1
解决办法
1750
查看次数

如何为ember添加默认值有多少关系?

我使用的灰烬2.5.0,我有两个型号serviceavailability它看起来像:

// availability
import DS from 'ember-data';

export default DS.Model.extend({
  day: DS.attr('string'),
  enabled: DS.attr('boolean'),
  startAt: DS.attr('string'),
  endAt: DS.attr('string'),
  service: DS.belongsTo('service')
});
Run Code Online (Sandbox Code Playgroud)

service它看起来像:

import DS from 'ember-data';

export default DS.Model.extend({
  name: DS.attr('string'),
  description: DS.attr('string'),
  availabilities: DS.hasMany('availability',
    {
      defaultValue:
        [
          {
            day: 'saturday',
            enabled: false,
            startAt: '',
            endAt: ''
          },
          {
            day: 'sunday',
            enabled: false,
            startAt: '',
            endAt: ''
          }
        ]
    }
  )
});
Run Code Online (Sandbox Code Playgroud)

你可以看到我试图使用defaultValue但没有运气.对于新路线,如果我们要创建新service记录,我想设置默认值.

任何帮助表示赞赏.

ember.js ember-data ember-cli

2
推荐指数
1
解决办法
579
查看次数

Ember Store:排序,过滤,查找记录

我在索引路径中将记录加载到我的商店:

model: function(){
    return Ember.RSVP.hash({
        cars: this.store.query('car',{}).then(function(data){

        })
    });
}
Run Code Online (Sandbox Code Playgroud)

然后我去我的汽车路线peekAll(没有网络请求)并获得所有的汽车记录:

model: function() {
    return Ember.RSVP.hash({
        cars: this.store.peekAll('car').sortBy('name')
    });
}
Run Code Online (Sandbox Code Playgroud)

您会注意到我可以使用'sortBy'根据本地存储数据库中的字段对记录进行排序.

我不明白的是如何从商店过滤或查找记录?例如,如果我想执行以下操作该怎么办:

  • 按名称对所有车辆记录进行排序,然后过滤/查找车辆,使其仅返回1998年或之后购买的车辆
  • 过滤记录,所以我只显示'Jaguars'的汽车
  • 即使商店有超过10条记录,也只返回最多10条记录.

我已经查看了findByfilterBy,但是文档似乎有点缺乏有关如何使用示例实现的细节.

findby ember.js ember-data

2
推荐指数
1
解决办法
2051
查看次数