我有一段时间一直在努力奋斗; 让我们看看是否有人可以帮助我.
虽然在自述文件中没有明确说明,但是ember-data提供了一些验证支持.您可以在代码和文档的某些部分看到:
https://github.com/emberjs/data/blob/master/packages/ember-data/lib/system/model/states.js#L411
https://github.com/emberjs/data/blob/master/packages/ember-data/lib/system/model/states.js#L529
REST适配器本身不添加验证支持,但我发现如果我在ajax调用中添加这样的东西,我可以使用来自服务器端的errors对象将模型置于"无效"状态:
error: function(xhr){
var data = Ember.$.parseJSON(xhr.responseText);
store.recordWasInvalid(record, data.errors);
}
Run Code Online (Sandbox Code Playgroud)
所以我可以轻松地做到以下几点:
var transaction = App.store.transaction();
var record = transaction.createRecord(App.Post);
record.set('someProperty', 'invalid value');
transaction.commit()
// This makes the validation fail
record.set('someProperty', 'a valid value');
transaction.commit();
// This doesn't trigger the commit again.
Run Code Online (Sandbox Code Playgroud)
问题是:如您所见,交易不会尝试重新发布.这里和这里解释了这一点.
所以问题是:如果我不能重用提交,我该如何处理?我有点怀疑与我将异常地将模型放到invalid状态这一事实有关- 通过阅读文档,它似乎是用于客户端验证的东西.在这种情况下,我该如何使用它们?
我有两个很多很多的模型.他们在我的应用程序的第一页上使用,我在加载它们时遇到问题.
两个型号只有少量项目(<200),我想在每个findAll请求中完全加载两个模型.但是当第一个模型被加载时,Ember开始逐项获取第二个模型的缺失数据.如果我尝试单独加载模型,我会收到错误并且必须设置{async:true}为hasManyattr.出于某种原因,Ember没有认识到第二个模型的请求的json.
无论如何都要获取两个模型并等到两个负载再继续之前?
谢谢.
您如何对相关数据的请求进行分页?例如,如果我的人员有一千个任务模型,如果我执行以下操作,那么在RESTful思考中,我会得到所有这些模型.
var tasks = person.get('tasks');
Run Code Online (Sandbox Code Playgroud)
这将是太多的数据.如何强制一些查询参数到幕后工作的请求?理想情况下,端点上有这样的东西附加到它的末尾.
?&offset=3&limit=3
这是一个小提琴来说明我想要完成的事情IndexController.我不知道使用ember-data执行分页请求的"ember方式"是什么.
我需要一种方法来获取特定模型的第一个记录.这次我使用这样的方式:
this.store.findAll('configModel').then(function(items) {
items.get('content')[0].set('isEnableShowUniqueName', true);
items.get('content')[0].set('isSavedToServer', false);
items.get('content')[0].save();
});
Run Code Online (Sandbox Code Playgroud)
但我认为那里有更好的和更好的方式?这是真的吗?你知道更好的方法吗?但是知道我没有记录的ID我需要该模型的唯一第一条记录.
我使用的是ember 1.3.1和ember-data 1.0.0-beta.5.在创建新模式时,我收到以下错误
断言失败:无法克隆未实现Ember.Copyable的Ember.Object
以下是我的型号代码
App.myModel = DS.Model.extend({name:DS.attr('string'),age:DS.attr('string')});
在我的创建路线模型功能
return Em.Object.create({});
最后保存我做了以下
this.store.createRecord('property',this.get('model'));
尽管出现错误,但我的后端服务已成功调用并保存了新模型.
请指导.
谢谢
我正在使用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) 随着最近的更新,我知道在路由器和控制器中,我可以很容易地做到this.store.find('model').但是我有一些需要调用的函数find不在路由器和控制器中.那么如何store从Ember App中的任何地方获取实例?
我知道最糟糕的是我能做到最坏App.__container__.lookup('store:main'),但我会尽量远离那个.
我的ember.js应用程序中有一些相关的模型(使用Ember 1.0和EmberData 1.0 RC2):
App.List = DS.Model.extend({
listName : DS.attr( ),
cards : DS.hasMany( 'card', { async : true } )
});
Run Code Online (Sandbox Code Playgroud)
和
App.Card = DS.Model.extend({
description : DS.attr( ),
list : DS.belongsTo( 'list' )
});
Run Code Online (Sandbox Code Playgroud)
我正在使用以下代码来保存模型并将它们添加到hasMany关系中.
createCard : function(){
var list = this.get( 'model' ),
card ;
card = this.store.createRecord( 'card', {
description : this.get( 'cardDescription' ),
list : list
} );
card.save().then( function(){
var cards = list.get( 'cards' );
cards.then( function(){
cards.pushObject( card );
list.save();
} );
} …Run Code Online (Sandbox Code Playgroud) 我在使用Ember Data Fixture Adapter时遇到了问题.保存记录时,所有记录的所有关联都将丢失.我创建了一个简单的JS Bin来说明这个问题:http://jsbin.com/aqiHUc/42/edit
如果您编辑任何用户并保存,则所有项目都会消失.
这是使用Ember 1.0.0和最新的Ember Data canary版本.
我不确定我做错了什么,或者这是否与Ember Data有关.
谢谢
我正在使用一个在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"根元素?