gpt4 book ai didi

ember.js - 从回调 emberjs 嵌套组件访问 "this"作为父级

转载 作者:行者123 更新时间:2023-12-04 21:12:23 26 4
gpt4 key购买 nike

我有一个父组件,其模板包含来自 https://www.npmjs.com/ember-cli-dropzonejs 的 dropzone 组件。 :

{{drop-zone url='#' addRemoveLinks=true success=fileReceived}}

在父 Controller 中,我有一个名为 fileReceived 的方法。当成功事件在 dropzone 上触发时被调用。但是,我想在 fileReceived 时调用存储在 Controller 上的其他方法。方法被调用但我无法访问 this .我尝试设置一个名为 self 的实例变量至 thisdidInsertElement ,但它给了我窗口而不是我的组件。

这是我的父组件 Controller :
import Ember from 'ember';

export default Ember.Component.extend({
self:null,
didInsertElement:function()
{
this.set('self', this);
},
fileReceived: function (file) {
//Validate sheet

this.sendAction('doStuff', file); //"this" returns a dropzone object instead of parentObject
//this.doStuff(file);
},
actions: {
doStuff: function (file) {
//do stuff with the file
}
});

最佳答案

我想 fileReceived应该在 Action 内,然后 this.sendAction应该是 this.send .那我想这会是你想要的吗?

import Ember from 'ember';

export default Ember.Component.extend({
actions: {
fileReceived: function (file) {
//Validate sheet

this.send('doStuff', file); //"this" returns a dropzone object instead of parentObject
//this.doStuff(file);
},
doStuff: function (file) {
//do stuff with the file
}
});

编辑 :

正如评论中所讨论的,您还需要将模板更改为
{{drop-zone url='#' addRemoveLinks=true success=(action 'fileReceived')}}

关于ember.js - 从回调 emberjs 嵌套组件访问 "this"作为父级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31912501/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com