标签: ember-data

如何使用store.commit()的响应json更新DS.Model?

鉴于模型:

Blog.Post = DS.Model.extend({
    title: DS.attr('string'),
    tags:  DS.hasMany('Blog.Tag', { embedded: true })
});

Blog.Tag = DS.Model.extend({
    foo: DS.attr('string'),
    bar: DS.attr('string')
});
Run Code Online (Sandbox Code Playgroud)

而实例:

var myPost = Blog.Post.createRecord({ id: 45, title: 'Foo Bar' })
Run Code Online (Sandbox Code Playgroud)

当我这样做时myPost.store.commit()(通过ember-data的DS.RESTAdapter),我的服务器返回一个应该应用的自动生成标签的列表myPost.示例响应json:

{
  posts: [
    {
      id: 45,
      title: 'Foo Bar',
      tags: [
        { id: 1, foo: 'bar1' },
        { id: 2, foo: 'bar2' }
      ]
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

我希望这myPost最终会得到json返回的两个标签,但我得到了这个错误:

Error: <DS.StateManager:ember448> could not respond to event invokeLifecycleCallbacks in state rootState.loaded.updated.uncommitted.
Run Code Online (Sandbox Code Playgroud)

我在这做错了什么?

编辑:澄清json以包含每个@ …

ember.js ember-data

5
推荐指数
1
解决办法
984
查看次数

如果提交返回错误,则回滚事务

对于这些步骤:
1.通过App.router.transaction()启动Transaction
2.将Post-1和Post-2添加到事务
3.删除Post-1
4.删除Post-2
5. transaction.commit()

如何处理以下内容:
1.从服务器中删除后从视图中删除记录.
2.如果Commit失败,则回滚事务.所以记录在View中再次可见.
3.如何在视图中显示已删除的记录,因为在本地删除后,它将从集合中删除.

ember.js ember-data

5
推荐指数
1
解决办法
438
查看次数

当ember-data接收http状态401时,Ember.js应用程序应重定向到登录

我希望我的Emberjs应用程序处理HTTP状态未授权(401).

该应用程序使用ember-data集成JSON API(Rails).

当接收HTTP状态未授权时,客户端层(Emberjs)应该重定向到提示登录的Emberjs视图/模板(401).

我怎样才能在整个应用程序中执行此操作?

login ember.js ember-data

5
推荐指数
2
解决办法
2792
查看次数

使用createRecord在余烬数据中设置ID

如果我尝试用类似的内容创建记录

var myObject = App.ModelName.createRecord( data );
myObject.get("transaction").commit();
Run Code Online (Sandbox Code Playgroud)

永远不会设置myObject的ID。

表示id生成应由EmberData处理(第一个响应)。那么应该怎么办?新ID在哪里确定。应该不应该回调API以获得有效的ID?

ember.js ember-data

5
推荐指数
1
解决办法
3172
查看次数

如何使Ember数据根据其规则停止将我的端点更改为单数和复数?

我需要Ember在调用REST端点时停止尝试猜测,但找不到这样做的方法.

如果我有一个端点说,/services我想要总是打电话给/services我,无论我是打电话find('services')还是打电话find('services', 1)

单面相同.

是否可以禁用此行为?即使我必须覆盖REStAdapter中的方法也没问题.

谢谢!

javascript rest web ember.js ember-data

5
推荐指数
1
解决办法
1395
查看次数

获取hasMany关系的长度而不触发获取

模型:

DS.Model.extend({
  title: DS.attr('string'),
  body: DS.attr('string'),
  comments: DS.hasMany('comment', { async: true} ),

  hasComments: Ember.computed.gt('comments.length', 0)
});
Run Code Online (Sandbox Code Playgroud)

有效载荷:

{ 
  "id": "abcdefg",
  "title": "some cats are cool",
  "body": "",
  "comments: ["100", "101", "102"]
}
Run Code Online (Sandbox Code Playgroud)

但是hasComments计算属性会单独触发每个注释的提取.我不希望这样:D

我知道这有效(避免了获取),但进入私有API:

hasComments: Ember.computed.gt('data.comments.length', 0)

ember.js 1.8.1

ember-data 1.0.0-beta.11

关于根据长度实现计算属性的任何其他建议

ember.js ember-data

5
推荐指数
2
解决办法
1107
查看次数

Ember-data 1.0.0-beta.19:store.find()返回DS.INTERNALMODEL实例

我已将Ember-data更新为1.0.0-beta.19,现在store.find('events')解决了promise返回DS.INTERNALMODEL实例,而不是DS.MODEL.使用Ember-data 1.0.0-beta.18它运行正常.有任何想法吗?

UPDATE

最后,我发现我的应用程序代码中的某个地方使用的是Ember数据内部代码store.find('events.content'),导致异常.调试器没有那么有用的跟踪它,但删除这个修复了我的问题.

ember-data

5
推荐指数
1
解决办法
875
查看次数

如何保存Ember Data记录而不提交到后端?

因此,Ember数据模型具有在不将其提交到后端deleteRecord()destroyRecord()情况下执行的功能。

我该怎么做save(),而不将其提交到后台?

我需要它的原因是,我正在使用自定义服务在一个请求中批量保存多个不同类型(模型)的记录。我已成功发送请求,并且记录保留在后端。

但是由于请求没有通过Ember Data管道,因此除非我手动处理,否则服务器的响应将被丢弃。

基本上,我在服务中有此功能:

// Accepts an array of records of mixed types,
// both existing and new
batchSave (records) {             

  this
    .customAjax(records)          // The records are persisted
    .then(payload => {            // Response from the backend with updated records
      store.pushPayload(payload); // Now all records have been updated with their current state

      // Now all the records are in their current state.
      // But they are still dirty!
      // How do I mark …
Run Code Online (Sandbox Code Playgroud)

ember.js ember-data

5
推荐指数
1
解决办法
2506
查看次数

Ember生产构建,找不到模块.由于模块名称包含'\'而不是'/'

在生产ember构建中,我在加载index.html时遇到了以下错误.

未捕获错误:无法找到ember-data/-private\system\references\record从中导入的模块ember-data/-private/system/references

我相信模块名称正斜杠会导致此问题.

我在ember-cli-build.js文件中没有任何条目.在分析此错误时,我发现注册表包含以下模块,
"ember-data/-private/system/references"
"ember-data/-private/system/references/belongs-to"
"ember-data/-private/system /文献/有一对多"

但是有些如何在注册表中检查以下依赖项ember-data-private\system\references\
tneter-data-private\system\references\belongs-to
ember-data-private\system\references\has-many

导致以下缺少模块错误.任何人都帮我解决这个错误.

ember.js ember-data ember-cli

5
推荐指数
1
解决办法
498
查看次数

如何在Ember 2.13.0中检测并保存关系变化?

我有文件清单.每个文档都有belongsTo定义的客户端属性.

当用户在其中一个文档中更改客户端时,我想在计数器中显示更改了多少文档.当用户决定按"发布"按钮时,会将文档客户端更改保存到api.

ember 2.13中的DS.Model有参数(https://emberjs.com/api/data/classes/DS.Model.html):

hasDirtyAttributes,dirtyType

他们两个都没有通过Ember 设计belongsTo/HasMany的变化作出反应.我看到了很多关于这个主题的答案,但我没有在2.13文档中看到任何isDirty()方法,也没有看到任何.send("becomeDirty")方法来手动设置脏状态的文档模型?我还看到了几个旧版Ember版本的插件/ mixins.

但我的问题是,Ember创作者如何"建议/建议/最佳实践"来解决这个问题.是否有一些基本的方法/手动解决方案,不需要任何第三方插件?对于模型中的每个关系可能都是onchangechange observer,或者对于子相关模型使用@ each.dirtyType计算属性(或者甚至设置子项不会被标记为脏本身?)?

在Ember 2.13中,什么是沙箱解决方案?

ember.js ember-data ember.js-2

5
推荐指数
1
解决办法
489
查看次数

标签 统计

ember-data ×10

ember.js ×9

ember-cli ×1

ember.js-2 ×1

javascript ×1

login ×1

rest ×1

web ×1