1
我想在http://element.eleme.io/#/en-US/component/tree#custom-node-content将从例如JSX代码的Vue $的createElement代码
原始代码片段:
renderContent(h, { node, data, store }) {
return (
<span>
<span>
<span>{node.label}</span>
</span>
<span style="float: right; margin-right: 20px">
<el-button size="mini" on-click={() => this.append(store, data) }>Append</el-button>
<el-button size="mini" on-click={() => this.remove(store, data) }>Delete</el-button>
</span>
</span>);
}
}
和我试图改变:
renderContent (h, { node, data, store }) {
return h('SPAN', [
h('SPAN', [h('SPAN', node.label)]),
h('SPAN', {attrs: {style: 'float: right; margin-right: 20px'}}, [
h('el-button', { attrs: { size: 'mini', on: { click: this.append(store, data) } } }, 'Append'),
h('el-button', { attrs: { size: 'mini', on: { click: this.delete } } }, 'Delete')
])
])
}
但它失败:按钮Append
总是呈现为每个节点的时间执行,绝不之后。尽管按钮Delete
从未执行。
所以问题是如何将正确的事件处理程序与参数传递给创建的元素?
第一种方法给出错误:渲染函数错误:“TypeError:无法读取属性”绑定“的未定义,第二 - 没有错误,但什么也没有 – htonus
这很奇怪......这是怎么可能的'这.append(store,data)'在你的代码中不会抛出错误? –
你是对的我打错了函数名。所以没有错误和事件处理程序没有被触发。然后我再次检查文档,发现把'on'键放在错误的地方 - attrs定义中。修好后 - 一切正常。非常感谢! – htonus