标签: ember-data

从其他控制器访问控制器

我正在使用ember.js-pre3 ember-data revision 11构建项目管理应用程序.

如何初始化几个控制器并使其在全局范围内可用.例如,我有一个currentUser控制器和usersController,我需要访问每个州.我以前在Ember.ready函数中有以下代码,但它不再有效.我想我这样做是为了调试.https://github.com/emberjs/ember.js/issues/1646

老路:

window.Fp = Ember.Application.create
  ready: () ->

  # Initialize Global collections
  appController = @get 'router.applicationController'
  store = @get 'router.store'

  # User controller sets usersController binding on applicationController
  # fetches all team users from server
  # json returned from server includes flag "isCurrent"
  usersController = @get 'router.usersController'
  usersController.set 'content', store.findAll(Fp.User) 
  appController.set 'usersController', usersController

  # CurrentUserController
  # sets currentUserController binding on applicationController
  # finds currentUser from usersController 
  currentUserController = @get 'router.currentUserController'
  currentUserController.set 'content', usersController.get('findCurrentUser')
  appController.set 'currentUserController', …
Run Code Online (Sandbox Code Playgroud)

ember.js ember-data

15
推荐指数
1
解决办法
8659
查看次数

删除Ember Data中POST/PUT操作的JSON根元素

我正在使用一个在POST/PUT谓词中需要这样的JSON的Web服务:

{
    "id":"CACTU",
    "companyName": "Cactus Comidas para llevar",
    "contactName": "Patricio Simpson",
    "contactTitle": "Sales Agent",
    "address": "Cerrito 333",
    "city": "Buenos Aires",
    "postalCode": "1010",
    "country": "Argentina",
    "phone": "(1) 135-5555",
    "fax": "(1) 135-4892"
}
Run Code Online (Sandbox Code Playgroud)

但是Ember Data发送了一个这样的JSON:

{
    "customer": 
    {
        "id":"CACTU",
        "companyName": "Cactus Comidas para llevar",
        "contactName": "Patricio Simpson",
        "contactTitle": "Sales Agent",
        "address": "Cerrito 333",
        "city": "Buenos Aires",
        "postalCode": "1010",
        "country": "Argentina",
        "phone": "(1) 135-5555",
        "fax": "(1) 135-4892"
    }
}
Run Code Online (Sandbox Code Playgroud)

如何在发送POST/PUT操作时删除"customer"根元素?

json ember.js ember-data

15
推荐指数
1
解决办法
2372
查看次数

将更改还原为ember数据模型

有没有办法轻松地将更改恢复为Ember Data模型?

我有一个绑定到编辑视图的模型.此视图使用户可以取消编辑,此时我想将更改还原为模型.有没有一种简单的方法可以在不克隆所有值的情况下执行此操作?

ember.js ember-data

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

如何使用ember-data从另一个模型继承或继承模型

让我们说我的rails模型看起来像这样:

class SalesRelationship < ActiveRecord

end
Run Code Online (Sandbox Code Playgroud)

这是由crossSell继承的,如下所示:

class crossSell < SalesRelationship 

end
Run Code Online (Sandbox Code Playgroud)

如何在ember-data中显示此继承关系.这是什么最好的做法:

App.salesRelationship = DS.Model.extend({
  name: DS.attr('string')
});
Run Code Online (Sandbox Code Playgroud)

我可以像这样创建一个名为'crossSell'的子类

crossSell = App.salesRelationship({
    productName: DS.attr('string')
});
Run Code Online (Sandbox Code Playgroud)

或者像这样

 App.salesRelationship.crossSell  = DS.Model.extend({
    productName: DS.attr('string')
  });
Run Code Online (Sandbox Code Playgroud)

ember.js ember-data

14
推荐指数
2
解决办法
4019
查看次数

如何使用RESTAdapter处理单一资源

如何在ember-data中处理奇异资源?假设我有以下RESTful路由:

GET /cart
POST /cart
UPDATE /cart
DELETE /cart
Run Code Online (Sandbox Code Playgroud)

ember-data期望find()返回一个数组,并且它会自动尝试复数我传递给我的模型的任何url.处理这种情况的最佳方法是什么?

rest ember.js ember-data

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

如何使用ember数据向hasMany关系添加对象

我有这两个模型:

App.Items = DS.Model.extend({
    provider: DS.attr('string'),
    name: DS.attr('string'),
    description: DS.attr('string'),
});

App.Baskets = DS.Model.extend({
    selectedItems: DS.hasMany('App.Items'),
    name: DS.attr('string'),
    username: DS.attr('string'),
})
Run Code Online (Sandbox Code Playgroud)

现在我想要做的是当用户选择它时将新项目添加到篮子.我试过这样做:

basket = App.Baskets.find(1);
item = App.Items.find(1);
basket.set("selectedItems", item)  ; 
App.store.commit();
Run Code Online (Sandbox Code Playgroud)

这不会返回任何错误,但它不会触发对服务器的任何请求.

或者,我试过这个:

basket = App.Baskets.find(1);
selectedItems = basket.get("selectedItems")
selectedItems.pushObject(App.Items.find(1))
App.store.commit();
Run Code Online (Sandbox Code Playgroud)

此方法返回错误:

Uncaught TypeError: Cannot call method 'indexOf' of undefined ember.js:1691
get ember.js:1691
DS.OneToManyChange.sync ember-data.js:4572
(anonymous function) ember-data.js:424
OrderedSet.forEach ember.js:1410
DS.ManyArray.DS.RecordArray.extend.arrayContentDidChange ember-data.js:423
newFunc ember.js:1167
Ember.ArrayProxy.Ember.Object.extend.arrangedContentArrayDidChange ember.js:10600
sendEvent ember.js:3792
Ember.Array.Ember.Mixin.create.arrayContentDidChange ember.js:7933
Ember.Mixin.create.replace ember.js:11011
Ember.ArrayProxy.Ember.Object.extend.replaceContent ember.js:10476
DS.ManyArray.DS.RecordArray.extend.replaceContent ember-data.js:351
newFunc ember.js:1167
Ember.ArrayProxy.Ember.Object.extend.replace …
Run Code Online (Sandbox Code Playgroud)

ember.js ember-data

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

使用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数据一起使用

过去几天我一直在用主键和最后一个版本的Ember Data 苦苦挣扎.

我首先阅读了如何在GitHub上的Breaking Changes文件中执行此操作,但它显然已经过时了.我尝试 其他 几种方法(借助Peter Wagenet在IRC上的帮助),但它们似乎都没有用.

我想slug在我的模型上制作我的主键,而且由于我正在使用MongoDB,我想用_id而不是id.

有没有人想出怎么做?我的根本问题是当我App.MyModel.find()在模型上做几个时,模型记录被加载两次.

ember.js ember-data

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

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-data ×10

ember.js ×10

ember-testing ×1

json ×1

pagination ×1

rest ×1