avalonjs 树组件递归渲染后无法获取预期数据

新手上路,请多包涵

问题描述

树组件递归显示后,无法正常获取勾选的数据(duplex失效了一样)

问题出现的环境背景及自己尝试过哪些方法

想通过双工duplex的形式,勾选的数据自动存放到数组中,在其他demo中,没问题,但是在树(通过递归:html)上面,失效了

相关代码

// 自己定义了一个组件
<ms-tree :widget="{url: @url, showCheck: true, onReady: treeReady}"></ms-tree>
// 下面是组件的html
<ul>

<li :for="(@index, @el) in @tree">
    <input type="checkbox" ms-attr="{value:@el.id}" data-duplex-changed="@selectOneFun(@el)" ms-duplex="@selected"/>
    <span :click="@openSubTree(el)" :class="[changeIcon(el)?'floder':'file']"></span>
    {{el.name}}
    <div :visible="@el.open" :html="@renderSubTree(@el)">
    </div>
</li>

</ul>
// 所有勾选的数据都把节点的id存放到selected数组中,每次勾选操作都会调用selectOneFun方法
// 下面是基本方法
// select
getSelected: function () {

alert(this.selected)
return this.selected

},
selectOneFun: function (e) {

alert(e.id)
// 直接push进数组,上面的getSelected方法都获取不到
// this.selected.push(e.id)

},
renderSubTree: function (el) {

return "<ms-tree :widget='{tree: @el.subTree}'></ms-tree>"

}

你期待的结果是什么?实际看到的错误信息又是什么?

每次勾选,通过getSelected方法可以获取所有勾选的节点id值,可以实际却只有第一个节点可以获取到,其他节点(通过递归生成的)都获取不到,即使直接push进selected中,getSelected方法都获取不到。就觉得特奇怪,希望大神能指点一下,带上截图

clipboard.png

clipboard.png

clipboard.png

阅读 1.4k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进