2017-08-10 54 views
4

我试图构建一个简单的Ember应用程序,它从窗体收集信息。我使用this tutorial作为指导。在本教程中有下面的代码从表单中抓取信息:在Ember中,这个和这个控制器有什么区别

export default Ember.Component.extend({ 
    ... 
    actions: { 
    saveRental1() { 
     var params = { 
     owner: this.get('owner'), 
     city: this.get('city'), 
     type: this.get('type'), 
     image: this.get('image'), 
     bedrooms: this.get('bedrooms'), 
     }; 
     ... 
     this.sendAction('saveRental2', params); 
    } 
    } 
}); 

这里是有点相关表格代码:

 <div class="form-group"> 
     <label for="image">Image URL</label> 
     {{input value=image id="image"}} 
     </div> 

     <button {{action 'saveRental1'}}>Save</button> 
    </form> 

在我的解决方案我无法得到这个工作。 this.get('whatever')在我的代码中总是显示为'undefined'。经过一些调试,我找到了一个解决方案,但这意味着将代码从this.get('city')更改为this.controller.get('city')

有人可以解释我在做什么错误或为什么?使用this.controller是'标准'吗?

回答

2

模板上下文将是控制器。路由model默认情况下,将通过setupController在控制器model属性中设置挂接返回数据。您可以通过途径thorugh访问控制器。

如果您在组件中使用this,那么它将引用组件实例,在您的情况下,如果组件中包含city属性,则可以使用组件中的this.get('city')来访问它。

0

他没有在那里更新教程。理想情况下,只有在将值传递给组件时,才能以this.get('city')this.get('owner')的身份访问。像下面的东西。

{{new-rental city=city owner=owner}} 

除非你通过你不能为this.get('city')访问值的组件,而不是你可以访问为this.controller.get('city')这是你的情况有什么情况发生。尝试将值传递给组件,如果您想直接访问它们。