这个问题与此问题有关:Ember.js {{render}} helper model not correctly set 但我认为我提出了错误的问题。
路由器
App.Router.map(function () {
this.resource('article', {path: '/article/:id'});
this.resource('article.new', {path: "/article/new"});
});
我没有为categorynew定义路由或资源,因为它在和 Article.new中以中的弹出呈现。
模板
<script type="text/x-handlebars" data-template-name="article">
{{render "category/new"}}
</script>
<!-- popups -->
<script type="text/x-handlebars" data-template-name="category/new">
Name: {{input type="text" value=name}}
Image: {{view App.UploadFile name="image" file=image }}
Category-parent: {{input value=categoryRelation}}
<button {{action 'saveCategory'}}>Save</button>
</script>
控制器
App.CategoryNewController = Ember.ObjectController.extend({
actions: {
saveCategory: function () {
var newCategory = this.store.createRecord('category', {
name: this.get('name'),
image: this.get('image'),
category_parent:this.get('category_parent')
});
newCategory.save();
console.log(this.get('naam')); // undefinded
}
}
});
当我填写使用{{render category/new}}
呈现的表单时,我会收到以下错误:
Assertion failed: Cannot delegate set('name', a) to the 'content' property of object proxy <App.CategoryNewController:ember387>: its 'content' is undefined. ember-1.1.2.js:417
Uncaught Error: Object in path nam could not be found or was destroyed.
我认为控制器中必须有一个模型。但是,如果我做this.get('model')
,它总是错误的模型。即使我在App.CategoryNewRoute
中定义它。
答案 0 :(得分:1)
当你致电render
时,你可以为它提供一个模型,但你没有为它提供模型。另一方面,你的控制器扩展了ObjectController,它告诉ember它是由模型支持的。因此,您可以为其提供模型,或者您可以将其更改为扩展Controller(并且所有内容都将存在于控制器上,而不是存在于不存在的模型上)。
App.CategoryNewController = Ember.Controller.extend({
在console.log中, name
拼写错误,但我很确定在将它放在SO上时只是一个错字。