2013-11-27 37 views
0

這個問題與此相關:Ember.js {{render}} helper model not correctly set 但我認爲我會問錯誤的問題。Ember.js使用{{render}} helper從模板中獲取屬性

路由器

App.Router.map(function() { 
    this.resource('article', {path: '/article/:id'}); 
    this.resource('article.new', {path: "/article/new"}); 
}); 

,因爲它是內既第二十 Article.new呈現爲一個彈出我還沒有定義categorynew路線或資源。

模板

<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

當您致電render時,您可以爲其提供一個模型,但您並未提供該模型。另一方面,你的控制器擴展了ObjectController,它告訴它支持一個模型。因此,無論是你可以提供一個模型,還是你可以改變它來擴展Controller(並且所有的東西都會在控制器上而不是在一個不存在的模型上)。

App.CategoryNewController = Ember.Controller.extend({ 

name拼寫錯誤在執行console.log,但我敢肯定,這只是一個錯字,而把它放在SO。

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

+0

這樣做的伎倆,謝謝!名字確實拼錯了,我總是把我的代碼和變量翻譯成英文,以便更好地理解願意幫助的每一個人。 – DelphiLynx