Ember.js ember js-未捕获错误:断言失败:无法委托集合
在将数据保存到api时,我会遇到此错误Ember.js ember js-未捕获错误:断言失败:无法委托集合,ember.js,ember-cli,Ember.js,Ember Cli,在将数据保存到api时,我会遇到此错误 Uncaught Error: Assertion Failed: Cannot delegate set('firstName', a) to the 'content' property of object proxy <>: its 'content' is undefined 不要使用ObjectController。只需使用Ember.Controller.extend。我在屏幕上看到了这一点。我自己也遇到了同样的问题。很可能您没有
Uncaught Error: Assertion Failed: Cannot delegate set('firstName', a) to the 'content' property of object proxy <>: its 'content' is undefined
不要使用ObjectController。只需使用Ember.Controller.extend。我在屏幕上看到了这一点。我自己也遇到了同样的问题。很可能您没有在管线中正确设置模型属性。根据本书,错误发生在
编辑
或新建
路线中
如果您的router.js
如下所示:
...
Router.map(function() {
this.resource('friends', function() {
this.route('new');
this.route('show', { path: ':friend_id' });
this.route('edit', { path: ':friend_id/edit' });
});
});
...
friends/index
路由需要设置model
属性:
import Ember from 'ember';
export default Ember.Route.extend({
model: function() {
return this.store.find('friend');
},
});
而friends/new
路线需要以不同的方式设置model
:
从“余烬”导入余烬
export default Ember.Route.extend({
model: function() {
return this.store.createRecord('friend');
},
});
对于任何不熟悉这本书(上面提到的)的人来说,问题来自书中的代码,这就是我引用它的原因。在大多数情况下,如果您遇到此问题,可能是因为您忘记或没有在适当的路由中正确设置模型属性。Ember告诉您没有设置控制器的内容属性,您是否在路由模型挂钩中设置了模型?请为您的路线添加代码。我收到了此错误。原来我有一个重复的控制器。我不认为使用
Ember.ObjectController
有什么特别的错误;至少在当前版本1.8.0中。然而,向Ember 2.0过渡的控制器将被弃用,基本上由组件(我相信)取代。为了顺利过渡到Ember 2.0,明智的做法是切换到Ember.Controller
,并在组件中创建模型属性。但是对于当前版本的Ember.ObjectController
应该很好,我在编辑路径上遇到了这个错误。我已经在routes/friends/edit
中定义了模型,例如model:function(params){返回this.store.find('friend',params.friends_id);}
但是当我在编辑页面点击取消按钮时,仍然会出现错误。有指针吗?@DavidBecerra编辑路径实际上不需要这个模型挂钩routes/friends/edit.js
应该只有导出默认的Ember.Route.extend({})上面显示的模型钩子应该位于routes/folders/index.js
中。如果这还不能解决问题,那么您是否将代码repo托管在github上?在我发布后大约一秒钟,我意识到了我的错误。在控制器中,我使用的是this
而不是this.get('model')
。所以我有了this.transitionRoute('friends.show',this)
和this.transitionRoute('friends.show',this.get('model'))
。
export default Ember.Route.extend({
model: function() {
return this.store.createRecord('friend');
},
});