- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我刚刚开始使用 Ember.js,并且想要实现一个非常简单的流程。
在概述屏幕上,我有一个新按钮,允许用户添加记录。保存后,用户将返回到概览屏幕,在概览中他会看到新创建的记录。
用户使用 linkTo 导航到“新记录”页面
{{#linkTo locations.new}} Insert location {{/linkTo}}
这会触发以下路线,准备新模型以便将其绑定(bind)到屏幕。
App.LocationsNewRoute = Ember.Route.extend({
model: function() {
return App.Location.createRecord();
}
});
新位置屏幕的 Handlebars 模板如下所示:
<script type="text/x-handlebars" data-template-name="locations/new">
<h1>New location</h1>
Latitude : {{view Ember.TextField valueBinding="latitude"}}
Longitude : {{view Ember.TextField valueBinding="longitude"}}
<p><button {{action addItem this}}>Add record</button></p>
</script>
addItem 的实现如下:
App.LocationsNewController = Ember.ObjectController.extend({
addItem: function(location) {
this.get("store").commit();
this.get("target").transitionTo("locations");
}
});
我遇到的一些问题:
模型商店交易
我在使用 Ember.js 时经常注意到这一点...通过 linkTo 转换到新路由与在浏览器中刷新它之间的差异有时是巨大的。
问题:我需要使用什么模式来实现“添加新记录”流程。我只想导航到新屏幕并有一个保存/取消按钮。我只想在单击“保存”时添加记录。应该只在单击“保存”时调用 createRecord,但是如何绑定(bind)控件?
模型重复
当我的 REST 服务在执行 POST(添加记录)后返回以下(非 ember.js 标准)JSON 时:
{
"latitude": "1.123",
"longitude": "1.123",
"accuracy": null,
"_id": "517d2dcf377dcffc11000009"
}
我有以下行为:
我能够通过在执行 POST 后返回 ember.js 标准 JSON 来解决这个问题
{
"location": {
"latitude": "1.123",
"longitude": "1.123",
"accuracy": null,
"_id": "517d31457b40fcbc2a000003"
}
}
该应用程序配置为使用 _id 作为主键,因为我使用的是 mongodb。
App.Adapter = DS.RESTAdapter.extend({
serializer: DS.RESTSerializer.extend({
primaryKey: function (type){
return '_id';
}
})
});
我现在可以理解为什么 Ember.js 提示纬度键(因为它期望位置根元素),但我不明白为什么它将模型两次添加到集合中(仅使用 1 个 POST)
所以 2 个问题:
最佳答案
模型商店交易
将您的创作包装到新事务中。这不会阻止记录在列表中可见(您始终可以过滤列表以拒绝新记录)。在你的路由器中,你可以在退出状态时回滚事务。像这样的东西:
App.LocationsNewRoute = Ember.Route.extend({
activate: function() {
this.transaction = DS.defaultStore.transaction(),
},
model: function() {
return this.transaction.createRecord(App.Location);
}
});
在您的save
处理程序中,您想要提交记录的事务(而不是商店的默认事务)。
更新:不回滚停用
模型重复
“您的服务器返回了带有关键纬度的哈希值,但您没有它的映射。” Ember 数据尝试旁加载 JSON 中返回的每个属性/键。 Ember 数据期望返回的对象位于 JSON 中的根键下(正如您所注意到的)。
我不知道为什么你有重复的内容。
更新2:如何不显示新创建的记录
我在评论中说错了,事务中创建的记录属于find
返回的数组。我忘记我已经更新了我的代码来做到这一点:
App.LocationsController = Ember.ArrayController.extend({
persisted: function() {
return this.get('arrangedContent').filter( function(contact) {
if( !contact.get('isNew') ) {
return true;
}
});
}.property('arrangedContent.@each.isNew', 'arrangedContent')
})
然后在您的模板中:
{{#each persisted}}
// whatever you need
{{/each}}
关于ember.js - 何时调用 createRecord 以及如何处理存储事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16263915/
我使用 Ember 应用程序创建了一个模型,并且尝试向该模型添加一条记录,但我不断收到一条错误消息,指出 undefind 不是函数。 window.Aplus = Ember.Application
我想知道为什么每次我尝试保存新创建的记录时都会得到一个空实例,但失败了。仅当我显示错误时,我才看到在我的帖子对象中添加了一条空记录。我还尝试对帖子进行排序,这让我可以看到最近创建的帖子,但行为有点奇怪
我有以下功能: this.store.createRecord('user', params).save().then(()=>{ this.set('responseModal'
截至本文,我正在使用最新的 ember 和 ember-data。我的设置包括 django、django-rest-framework。我的适配器是 ember-data-django-rest-a
我刚刚开始使用 Ember.js,并且想要实现一个非常简单的流程。 在概述屏幕上,我有一个新按钮,允许用户添加记录。保存后,用户将返回到概览屏幕,在概览中他会看到新创建的记录。 用户使用 linkTo
我尝试存储具有belongsTo 关联的记录,但关联的ID 始终为空: 客户模型 Docket.Customer = DS.Model.extend({ name: DS.attr(
通过 PJSIP 库站点中提供的 pygui 代码后,我修改了示例如下。我有两个问题 在每个回调函数中,最后我需要添加一个虚拟的 raise 异常,否则它会出错。例如,如果我评论 onIncoming
我想知道是否有人可以指出正确的方向并帮助我修复我在使用 Firebases createUser 方法创建用户后尝试使用我的 Ember.js 模型添加用户时遇到的错误。 这里更具体的是我得到的错误:
我正在我的插件中创建一个表单,它将保存存储中的记录,并且还会通过 post api 调用将 JSON 对象发送到 Rails 后端。 我的问题是“createRecord”方法不会被适配器内的自定义方
我尝试以多种不同的方式编写此代码,但它返回此错误: Uncaught TypeError: Cannot read property 'createRecord' of undefined App.S
我想知道为什么在使用 findQuery 获取数据时,我的模板在 createRecord 之后没有得到更新。 当更改此 return this.store.findQuery('timetracki
尝试使用 Xrm.WebApi 创建自定义实体记录. 从数组负载创建批量记录时如何处理计时问题?我的所有 org_orgtrigger 自定义实体均已创建,但我的 org_orgtask 实体均未创建
Emsters! 我想弄清楚为什么在我创建新记录并将其保存到商店后我的模型没有刷新。 我的路线按如下方式计算模型: model: function (params) { var postID =
您好,我正在尝试使用 emberjs + ember-data + Rest 适配器创建一个数据。 它在保存数据时起作用,但在我使用的模板中,如果您已经传入路线,则在这种情况下您可能会重定向回“组”列
看来 store在我的 Ember 测试中不可用,无论是在 ObjectController 的上下文中。或在任何单元测试中。我的单元测试: `import {test, moduleFor} fro
如果我尝试用类似的东西创建记录 var myObject = App.ModelName.createRecord( data ); myObject.get("transaction").commi
我想创建一个新的站点记录。该模型如下所示: var SiteModel = DS.Model.extend({ name: attr(), ... languages: DS.
我正在尝试设置 Ember 数据调用来创建一个注册对象,该对象仅包含一封电子邮件,仅包含其他内容。我的 Ember Data 设置有些奇怪,因为参数似乎已传递,但 Rails 无法接收它们。不确定出了
我正在为 Web 应用程序使用 Ember 数据,在我尝试使用“createRecord”保存一些新数据之前,一切都运行得非常顺利。 这是代码的要点: App.Store = DS.Store.ext
编辑 11/16/14:版本信息 DEBUG: Ember : 1.7.0 ember-1.7.0.js:14463 DEBUG: Ember Data : 1.0.0-beta.10+ca
我是一名优秀的程序员,十分优秀!