灰烬创建对象

时间:2013-07-04 07:43:54

标签: ember.js

我正在尝试在ember中创建一条新记录。在过去,我曾经在对象控制器上手动创建每个模型的字段,但这看起来真的是多余的。使用代码in this fiddle,当我开始在文本框中键入信息时,我收到错误

Assertion failed: Cannot delegate set('name', t) to the 'content' property of object proxy <App.StockNewController:ember258>: its 'content' is undefined

2 个答案:

答案 0 :(得分:3)

基本上你缺少的是App.StockNewController中定义的一些变量。 因为当模板中定义的绑定启动并且后备控制器上没有定义此类属性时,您会收到错误。我已经改变了一点,现在错误消失了。

App.StockNewController = Em.ObjectController.extend({
  name: '',
  code: '',
  description: ''
});

请在此处查看工作jsbin

如果有帮助,请告诉我。

答案 1 :(得分:0)

原因是你的StockNewController扩展了Ember.ObjectController,它扩展了Ember.ObjectProxy。

Ember.ObjectProxy会将其所有未知属性委托给内容对象,但有一个例外。 如果我们尝试在代理上设置新属性而内容未定义,我们将获得异常。

这里你尝试在ObjectController上设置name属性,当它的内容未定义时。

简单的解决方案是在设置任何其他属性之前设置内容。这可以在模型钩子本身完成。

App.StockNewRoute = Em.Route.extend({
  model: function() {
    return App.Stock.create();
  } 
});

为简单起见,我使用模型的简单Ember.Object更新了fiddle

您可以获得有关ObjectProxy here

的详细信息