Ember.js使用{{render}} helper从模板中获取属性

时间:2013-11-27 10:30:11

标签: javascript ember.js ember-data

这个问题与此问题有关: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中定义它。

1 个答案:

答案 0 :(得分:1)

当你致电render时,你可以为它提供一个模型,但你没有为它提供模型。另一方面,你的控制器扩展了ObjectController,它告诉ember它是由模型支持的。因此,您可以为其提供模型,或者您可以将其更改为扩展Controller(并且所有内容都将存在于控制器上,而不是存在于不存在的模型上)。

App.CategoryNewController = Ember.Controller.extend({
在console.log中,

name拼写错误,但我很确定在将它放在SO上时只是一个错字。

http://emberjs.jsbin.com/EtafEFUr/1/edit