在Ember中,这个和this.controller有什么区别
In Ember, what is the difference between this and this.controller
我正在尝试构建一个简单的 Ember 应用程序来从表单中收集信息。我使用 this tutorial 作为指南。在本教程中,它具有以下代码以从表单中获取信息:
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')
有人可以解释我做错了什么或为什么吗?是'standard'使用this.controller吗?
模板上下文将成为控制器。 Routemodel
hookreturn数据默认会通过setupController
设置在controllermodel
属性中。您可以通过 this.controller
.
路径访问控制器
如果您在组件内部使用 this
它将引用组件实例,在您的情况下,如果您在组件中获得 city
属性,那么您可以访问它在组件中使用 this.get('city')
。
他没有在那里更新教程。理想情况下,仅当您将值传递给组件时,您才能作为 this.get('city')
或 this.get('owner')
进行访问。如下所示。
{{new-rental city=city owner=owner}}
除非您将值传递给无法作为 this.get('city')
访问的组件,否则您可以作为 this.controller.get('city')
访问,这就是您的情况。如果您想直接访问它们,请尝试将值传递给组件。
我正在尝试构建一个简单的 Ember 应用程序来从表单中收集信息。我使用 this tutorial 作为指南。在本教程中,它具有以下代码以从表单中获取信息:
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')
有人可以解释我做错了什么或为什么吗?是'standard'使用this.controller吗?
模板上下文将成为控制器。 Routemodel
hookreturn数据默认会通过setupController
设置在controllermodel
属性中。您可以通过 this.controller
.
如果您在组件内部使用 this
它将引用组件实例,在您的情况下,如果您在组件中获得 city
属性,那么您可以访问它在组件中使用 this.get('city')
。
他没有在那里更新教程。理想情况下,仅当您将值传递给组件时,您才能作为 this.get('city')
或 this.get('owner')
进行访问。如下所示。
{{new-rental city=city owner=owner}}
除非您将值传递给无法作为 this.get('city')
访问的组件,否则您可以作为 this.controller.get('city')
访问,这就是您的情况。如果您想直接访问它们,请尝试将值传递给组件。